VictoryPie
VictoryPie
renders a dataset as a pie chart.
<VictoryPie data={[ { x: "Cats", y: 35 }, { x: "Dogs", y: 40 }, { x: "Birds", y: 55 } ]} />
animate
type: boolean || object
VictoryPie
uses the standard animate
prop. Read about it here
See the Animations Guide for more detail on animations and transitions
animate={{ duration: 2000 }}
categories
type: array[string] || { x: array[string], y: array[string] }
VictoryPie
uses the standard categories
prop. Read about it here
categories={{ x: ["dogs", "cats", "mice"] }}
colorScale
type: array[string]
The colorScale
prop defines a color scale to be applied to each slice of VictoryPie
. This prop should be given as an array of CSS colors, or as a string corresponding to one of the built in color scales: "grayscale", "qualitative", "heatmap", "warm", "cool", "red", "green", "blue". VictoryPie
will assign a color to each slice by index, unless they are explicitly specified in the data object. Colors will repeat when there are more slices than colors in the provided colorScale
.
default (provided by default theme): colorScale="grayscale"
<VictoryPie colorScale={["tomato", "orange", "gold", "cyan", "navy" ]} data={sampleData} />
containerComponent
type: element
VictoryPie
uses the standard containerComponent
prop. Read about it here
Note: VictoryPie
only works with the VictoryContainer
component
default: containerComponent={<VictoryContainer/>}
containerComponent={<VictoryContainer responsive={false}/>}
cornerRadius
type: number || function
The cornerRadius
prop specifies the corner radius of the slices rendered in the pie chart. When given as a function, cornerRadius
will be evaluated for each slice of the pie with an object corresponding to the props for that slice.
<VictoryPie cornerRadius={({ datum }) => datum.y * 5} data={sampleData} />
data
type: array[object]
VictoryPie
uses the standard data
prop. Read about it here
See the Data Accessors Guide for more detail on formatting and processing data.
<VictoryPie data={[ { x: 1, y: 2, label: "one" }, { x: 2, y: 3, label: "two" }, { x: 3, y: 5, label: "three" } ]} />
dataComponent
type: element
VictoryPie
uses the standard dataComponent
prop. Read about it here
VictoryPie
supplies the following props to its dataComponent
: data
, datum
, events
, index
, pathFunction
, slice
, style
See the Custom Components Guide for more detail on creating your own dataComponents
default: <Slice/>
dataComponent={<Slice events={{ onClick: handleClick }}/>}
endAngle
type: number
The endAngle
props defines the overall end angle of the pie in degrees. This prop is used in conjunction with startAngle
to create a pie that spans only a segment of a circle, or to change overall rotation of the pie. This prop should be given as a number of degrees. Degrees are defined as starting at the 12 o'clock position, and proceeding clockwise.
default: endAngle={360}
<div> <VictoryPie startAngle={90} endAngle={450} data={sampleData} /> <VictoryPie startAngle={90} endAngle={-90} data={sampleData} /> </div>
eventKey
type: string || integer || array[string] || function
VictoryPie
uses the standard eventKey
prop to specify how event targets are addressed. This prop is not commonly used. Read about the eventKey
prop in more detail here
eventKey = "x";
events
type: array[object]
VictoryPie
uses the standard events
prop. Read about it here
See the Events Guide for more information on defining events.
<div> <h3>Click Me</h3> <VictoryPie events={[{ target: "data", eventHandlers: { onClick: () => { return [ { target: "data", mutation: ({ style }) => { return style.fill === "#c43a31" ? null : { style: { fill: "#c43a31" } }; } }, { target: "labels", mutation: ({ text }) => { return text === "clicked" ? null : { text: "clicked" }; } } ]; } } }]} data={sampleData} /> </div>
externalEventMutations
type: array[object]
VictoryPie
uses the standard externalEventMutations
prop. Read about it in detail
groupComponent
type: element
VictoryPie
uses the standard groupComponent
prop. Read about it here
default: <g/>
groupComponent={<g transform="rotate(90)" />}
height
type: number
VictoryPie
uses the standard height
prop. Read about it here
default (provided by default theme): height={400}
height={400}
innerRadius
type: number || function
The innerRadius
prop determines the number of pixels between the center of the chart and the inner edge of a donut chart. When this prop is set to zero a regular pie chart is rendered. When this prop is given as a function, innerRadius
will be evaluated for each slice of the pie with the props corresponding to that slice
<VictoryPie innerRadius={({ datum }) => datum.y * 20} data={sampleData} />
labelComponent
type: element
VictoryPie
uses the standard labelComponent
prop. Read about it here
default: <VictoryLabel/>
<VictoryPie data={sampleData} labels={({ datum }) => datum.y} labelComponent={<VictoryLabel angle={45}/>} />
labelPlacement
type "parallel" || "perpendicular" || "vertical" || function
The labelPlacement
prop specifies the angular placement of each label relative to the angle of its corresponding slice. This prop should be given as "parallel", "perpendicular", "vertical", or as a function that returns one of these values. When this prop is not given, the label will be placed vertically.
<VictoryPie data={sampleData} labels={({ datum }) => `y: ${datum.y}`} labelPosition={({ index }) => index ? "centroid" : "startAngle" } labelPlacement={({ index }) => index ? "parallel" : "vertical" } />
labelPosition
type "startAngle" || "endAngle" || "centroid" || function
The labelPosition
prop specifies the position of each label relative to its corresponding slice. This prop should be given as "startAngle", "endAngle", "centroid", or as a function that returns one of these values. When this prop is not given, the label will be positioned at the centroid of each slice.
<VictoryPie data={sampleData} labels={({ datum }) => datum.y} labelPosition={({ index }) => index ? "centroid" : "startAngle" } />
labelRadius
type: number || function
The labelRadius
prop defines the radius of the arc that will be used for positioning each slice label. If this prop is not set, the label radius will default to the radius of the pie + label padding. If this prop is given as a function, it will be evaluated for each label VictoryPie
renders, and will be evaluated with the props that correspond to that label, as well as the radius and innerRadius of the corresponding slice. If labelIndicator
prop is being used, passed labelRadius
(> radius) is used to calculate the co-ordinates of the outer indicator line. If no specific value for labelRadius is passed , default values will be considered. The outer indicator line length is the difference between labelRadius
and labelIndicatorOuterOffset
.
<VictoryPie data={sampleData} labelRadius={({ innerRadius }) => innerRadius + 5 } radius={({ datum }) => 50 + datum.y * 20} innerRadius={50} style={{ labels: { fill: "white", fontSize: 20, fontWeight: "bold" } }} />
labels
type: array || function
VictoryPie
uses the standard labels
prop. Read about it here
<VictoryPie data={sampleData} labels={({ datum }) => `y: ${datum.y}`} />
name
type: string
The name
prop is used to reference a component instance when defining shared events.
name = "series-1";
origin
type: { x: number, y: number }
The origin
prop specifies coordinates for the center of the pie. When this prop is not given, the origin will be calculated based on the width
, height
, and padding
props.
<VictoryPie origin={{ y: 250 }} padding={100} data={sampleData} />
padAngle
type: number || function
The padAngle
prop defines the amount of separation between adjacent data slices in number of degrees. When this prop is given as a function it will be evaluated for each slice, and will be evaluated with the props that correspond to that slice.
<VictoryPie padAngle={({ datum }) => datum.y} innerRadius={100} data={sampleData} />
padding
type: number || { top: number, bottom: number, left: number, right: number }
VictoryPie
uses the standard padding
prop. Read about it here
default (provided by default theme): padding={50}
padding={{ top: 20, bottom: 60 }}
radius
type: number || function
The radius
prop specifies the radius of the pie. When this prop is not given, it will be calculated based on the width
, height
, and padding
props. When this prop is given as a function it will be evaluated for each slice with the props corresponding to that slice.
<VictoryPie radius={({ datum }) => 20 + datum.y * 20} data={sampleData} />
sharedEvents
The sharedEvents
prop is used internally to coordinate events between components. It should not be set manually.
sortKey
type: string || integer || array[string] || function
VictoryPie
uses the standard sortKey
prop. Read about it here
See the Data Accessors Guide for more detail on formatting and processing data.
sortKey = "x";
sortOrder
type: "ascending" || "descending"
The sortOrder
prop specifies whether sorted data should be returned in ascending or descending order.
default: sortOrder="ascending"
standalone
type: boolean
VictoryPie
uses the standard standalone
prop. Read about it here
default: standalone={true}
<svg width={300} height={300}> <circle cx={150} cy={150} r={50} fill="#c43a31"/> <VictoryPie standalone={false} width={300} height={300} innerRadius={75} data={sampleData} /> </svg>
startAngle
type: number
The startAngle
props defines the overall start angle of the pie in degrees. This prop is used in conjunction with endAngle
to create a pie that spans only a segment of a circle, or to change overall rotation of the pie. This prop should be given as a number of degrees. Degrees are defined as starting at the 12 o'clock position, and proceeding clockwise.
default: endAngle={0}
<div> <VictoryPie startAngle={90} endAngle={450} data={sampleData} /> <VictoryPie startAngle={90} endAngle={-90} data={sampleData} /> </div>
style
type: { parent: object, data: object, labels: object }
VictoryPie
uses the standard style
prop. Read about it here
default (provided by default theme): See grayscale theme for more detail
<VictoryPie style={{ data: { fillOpacity: 0.9, stroke: "#c43a31", strokeWidth: 3 }, labels: { fontSize: 25, fill: "#c43a31" } }} data={sampleData} />
theme
type: object
VictoryPie
uses the standard theme
prop. Read about it here
See the Themes Guide for information about creating custom themes.
default: theme={VictoryTheme.grayscale}
theme={VictoryTheme.material}
width
type: number
VictoryPie
uses the standard width
prop. Read about it here
default (provided by default theme): width={400}
width={400}
x
type: string || integer || array[string] || function
VictoryPie
uses the standard x
data accessor prop. Read about it here
See the Data Accessors Guide for more detail on formatting and processing data.
x = "employee.name";
y
type: string || integer || array[string] || function
VictoryPie
uses the standard y
data accessor prop. Read about it here
See the Data Accessors Guide for more detail on formatting and processing data.
y={(d) => d.value + d.error}
labelIndicator
type: boolean || element
The labelIndicator
prop defines the label indicator line between labels and the pie chart. If this prop is used as a boolean,then the default indicator will be displayed. To customize or pass your own styling <LineSegment/>
can be passed to labelIndicator. LabelIndicator is functional only when labelPosition = "centroid". To adjust the labelIndicator length, labelIndicatorInnerOffset
and labelIndicatorOuterOffset
props can be used alongside labelIndicator.
<div> <VictoryPie data={sampleData} labelIndicator /> <VictoryPie data={sampleData} labelIndicator={<LineSegment style = {{stroke:"red", strokeDasharray:1,fill: "none",}}/>} /> <VictoryPie data={sampleData} labelIndicator={<LineSegment style = {{stroke:"red", strokeDasharray:1,fill: "none",}}/>} labelIndicatorInnerOffset={10} labelIndicatorOuterOffset={5} /> </div>
labelIndicatorInnerOffset
type: number
The labelIndicatorInnerOffset
prop defines the offset by which the indicator length inside pie chart is being drawn. Higher the number shorter the length.
<VictoryPie data={sampleData} labelIndicator labelIndicatorInnerOffset={10} />
labelIndicatorOuterOffset
type: number
The labelIndicatorOuterOffset
prop defines the offset by which the indicator length outside the pie chart is being drawn. Higher the number shorter the length.
<VictoryPie data={sampleData} labelIndicator labelIndicatorOuterOffset={5} />