VictoryArea
victory-area@^30.0.0
exports VictoryArea
and Area
components
View these docs at https://formidable.com/open-source/victory/docs/victory-area to see live examples.
VictoryArea renders a dataset as a single area. VictoryArea can be composed with VictoryChart
to create area charts.
<VictoryChart
theme={VictoryTheme.material}
>
<VictoryArea
style={{ data: { fill: "#c43a31" } }}
data={sampleData}
/>
</VictoryChart>
Props
animate
type: boolean || object
VictoryArea
uses the standard animate
prop. Read about it in detail
See the Animations Guide for more detail on animations and transitions
animate={{
duration: 2000,
onLoad: { duration: 1000 }
}}
categories
type: array[string] || { x: array[string], y: array[string] }
VictoryArea
uses the standard categories
prop. Read about it in detail
categories={{ x: ["dogs", "cats", "mice"] }}
containerComponent
type: element
VictoryArea
uses the standard containerComponent
prop. Read about it in detail
containerComponent={<VictoryVoronoiContainer/>}
data
type: array[object]
VictoryArea
uses the standard data
prop. Read about it in detail
See the Data Accessors Guide for more detail on formatting and processing data.
<VictoryChart>
<VictoryArea
data={[
{ x: 1, y: 2, y0: 0 },
{ x: 2, y: 3, y0: 1 },
{ x: 3, y: 5, y0: 1 },
{ x: 4, y: 4, y0: 2 },
{ x: 5, y: 6, y0: 2 }
]}
/>
</VictoryChart>
dataComponent
type: element
VictoryArea
uses the standard dataComponent
prop. Read about it detail
VictoryArea
supplies the following props to its dataComponent
: data
, events
, groupComponent
, interpolation
, origin
(for polar charts), polar
, scale
, style
See the Custom Components Guide for more detail on creating your own dataComponents
default: <Area/>
dataComponent={<Area events={{ onClick: handleClick }}/>}
domain
type: array[low, high] || { x: [low, high], y: [low, high] }
VictoryArea
uses the standard domain
prop. Read about it in detail
domain={{x: [0, 100], y: [0, 1]}}
domainPadding
type: number || array[left, right] || { x: [left, right], y: [bottom, top] }
VictoryArea
uses the standard domainPadding
prop. Read about it in detail
domainPadding={{x: [10, -10], y: 5}}
eventKey
type: string || integer || array[string] || function
VictoryArea
uses the standard eventKey
prop. This prop is not commonly used. Read about the eventKey
prop in more detail here
note: VictoryArea
only renders one element per dataset, so only one event key will be generated.
eventKey = "x";
events
type: array[object]
VictoryArea
uses the standard events
prop. Read about it in detail
See the Events Guide for more information on defining events.
note: VictoryArea
will use the special eventKey
"all" rather than referring to data by index, as it renders only one element for an entire dataset
<div style={{ margin: 50 }}>
<h3>Click Me</h3>
<VictoryArea
style={{
data: { fill: "#c43a31" }
}}
events={[{
target: "parent",
eventHandlers: {
onClick: () => {
return [
{
target: "data",
eventKey: "all",
mutation: (props) => {
const fill = props.style && props.style.fill;
return fill === "black" ? null : { style: { fill: "black" } };
}
}
];
}
}
}]}
data={sampleData}
/>
</div>
externalEventMutations
type: array[object]
VictoryArea
uses the standard externalEventMutations
prop. Read about it in detail
groupComponent
type: element
VictoryArea
uses the standard groupComponent
prop. Read about it in detail
note: VictoryArea
uses VictoryClipContainer
as its default groupComponent
VictoryClipContainer
renders a <g>
tag with a clipPath
def
. This allows continuous data components to transition smoothly when new data points enter and exit. Supplying a custom groupComponent
to VictoryArea
may result in broken animations.
default: <VictoryClipContainer/>
<VictoryChart>
<VictoryArea
groupComponent={<VictoryClipContainer clipPadding={{ top: 5, right: 10 }}/>}
style={{ data: { stroke: "#c43a31", strokeWidth: 15, strokeLinecap: "round" } }}
data={sampleData}
/>
</VictoryChart>
height
type: number
VictoryArea
uses the standard height
prop. Read about it here
default (provided by default theme): height={300}
height={400}
interpolation
type: options
The interpolation
prop determines how data points should be connected when creating a path. Victory uses d3-shape for interpolating curves.
Polar area charts may use the following interpolation options: "basis", "cardinal", "catmullRom", "linear"
Cartesian area charts may use the following interpolation options: "basis", "cardinal", "catmullRom", "linear", "monotoneX", "monotoneY", "natural", "step", "stepAfter", "stepBefore"
Explore all the interpolation options.
default: "linear"
<VictoryArea
interpolation="natural"
data={sampleData}
/>
labelComponent
type: element
VictoryArea
uses the standard labelComponent
prop. Read about it in detail
default: <VictoryLabel renderInPortal/>
<VictoryArea
data={sampleData}
labels={(datum) => datum.y}
labelComponent={<VictoryLabel renderInPortal dy={-20}/>}
/>
maxDomain
type: number || { x: number, y: number }
VictoryArea
uses the standard maxDomain
prop. Read about it in detail
<VictoryChart maxDomain={{ x: 3 }}>
<VictoryArea data={sampleData}/>
</VictoryChart>
minDomain
type: number || { x: number, y: number }
VictoryArea
uses the standard minDomain
prop. Read about it in detail
<VictoryChart minDomain={{ x: 2 }}>
<VictoryArea data={sampleData}/>
</VictoryChart>
labels
type: array || function
VictoryArea
uses the standard labels
prop. Read about it in detail
<VictoryArea
data={sampleData}
labels={(datum) => 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 is only used by polar charts, and is usually controlled by VictoryChart
. It will not typically be necessary to set an origin
prop manually
Read about the origin
prop in detail
padding
type: number || { top: number, bottom: number, left: number, right: number }
VictoryArea
uses the standard padding
prop. Read about it here
default (provided by default theme): padding={50}
padding={{ top: 20, bottom: 60 }}
polar
type: boolean
VictoryArea
uses the standard polar
prop. Read about it here
<VictoryChart polar
theme={VictoryTheme.material}
>
<VictoryPolarAxis dependentAxis
style={{ axis: { stroke: "none" } }}
tickFormat={() => null}
/>
<VictoryPolarAxis/>
<VictoryArea
data={sampleData}
style={{
data: { fill: "#c43a31" },
}}
/>
</VictoryChart>
range
type: array[low, high] || { x: [low, high], y: [low, high] }
The range
prop is usually controlled by VictoryChart
. It will not typically be necessary to set a range
prop manually
Read about the range
prop in detail
samples
type: number
VictoryArea
uses the standard samples
prop. Read about it here
default: samples={50}
samples={100}
scale
type: scale || { x: scale, y: scale }
VictoryArea
uses the standard scale
prop. Read about it here
Options for scale include "linear", "time", "log", "sqrt" and the d3-scale
functions that correspond to these options.
default: scale="linear"
scale={{x: "linear", y: "log"}}
sharedEvents
The sharedEvents
prop is used internally to coordinate events between components. It should not be set manually.
singleQuadrantDomainPadding
type: boolean || { x: boolean, y: boolean }
VictoryArea
uses the standard singleQuadrantDomainPadding
prop. Read about it here
sortKey
type: string || integer || array[string] || function
VictoryArea
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
VictoryArea
uses the standard standalone
prop. Read about it here
note: When VictoryArea
is nested within a component like VictoryChart
, this prop will be set to false
default: standalone={true}
<svg width={300} height={300}>
<circle cx={150} cy={150} r={150} fill="#c43a31"/>
<VictoryArea
standalone={false}
width={300} height={300} padding={0}
data={sampleData}
/>
</svg>
style
type: { parent: object, data: object, labels: object }
VictoryArea
uses the standard style
prop. Read about it here
default (provided by default theme): See grayscale theme for more detail
<VictoryArea
style={{
data: {
fill: "#c43a31", fillOpacity: 0.7, stroke: "#c43a31", strokeWidth: 3
},
labels: {
fontSize: 15,
fill: (d) => d.x === 3 ? "#000000" : "#c43a31"
}
}}
data={sampleData}
labels={(d) => d.x}
/>
theme
type: object
VictoryArea
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
VictoryArea
uses the standard width
prop. Read about it here
default (provided by default theme): width={450}
width={400}
x
type: string || integer || array[string] || function
VictoryArea
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
VictoryArea
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}
y0
type: string || integer || array[string] || function
VictoryArea
uses the standard y0
data accessor prop to set a baseline. Read about it here
See the Data Accessors Guide for more detail on formatting and processing data.
<VictoryChart>
<VictoryArea
data={sampleData}
y0={(d) => d.y - 1}
/>
</VictoryChart>
32.0.0 (2019-02-27)
Horizontal Chart Improvements!
#1258
The goal of this change is to make it possible to turn any existing chart into a horizontal chart by adding the horizontal
prop to the chart without needing to alter any other props.
- supports horizontal versions of all chart types without needing to alter data
- supports all event containers for horizontal charts
- enforces consistency across props that take x and y values so that the
x
value always refers to the independent dimension, and the y
value always refers to the dependent dimension. - the orientation of
VictoryAxis
components is no longer tied to whether or not they are the dependentAxis
Breaking Changes
Most Horizontal Charts
The change in how props with x and y values are treated (i.e. scale
, domain
, etc) will be a breaking change for most horizontal charts. In most cases, reversing the x
and y
values of props you are providing to your horizontal chart will be sufficient to correct the change. For example:
<VictoryChart horizontal scale={{ x: "log" }} domain={{ y: [4, 9] }}>
<VictoryBar
data={[
{ x: 5, y: 0.1 },
{ x: 6, y: 1 },
{ x: 7, y: 10 },
{ x: 8, y: 100 }
]}
/>
</VictoryChart>
Should be changed to:
<VictoryChart horizontal scale={{ y: "log" }} domain={{ x: [4, 9] }}>
<VictoryBar
data={[
{ x: 5, y: 0.1 },
{ x: 6, y: 1 },
{ x: 7, y: 10 },
{ x: 8, y: 100 }
]}
/>
</VictoryChart>
Props affected by this change are: scale
, domain
, maxDomain
, minDomain
, domainPadding
, and categories
Horizontal Charts with Event Containers
Dimension props such as brushDimension
have changed so that they always refer to the dimension of the target variable (x for the independent variable, and y for the dependent variable). For example, a VictoryBrushContainer
component with brushDimension="x"
will move and expand only in the independent dimension regardless of whether the chart is horizontal.
Props affected by this change are: brushDimension
, cursorDimension
, selectionDimension
, voronoiDimension
, and zoomDimension
Horizontal Charts with Custom dataComponents
The position values (i.e. x
, y
, x0
, y0
) supplied to custom dataComponents
from components like VictoryChart
will be scaled for the layout of the horizontal chart. Users who rely on these values may need to flip them or adjust them depending on their use case
Horizontal VictoryBoxPlot
Previously VictoryBoxPlot
required data to be flipped (x values flipped with y values) in order to plot horizontal charts. This is no longer required, and providing data in this format will no longer work correctly. To correct for this change, it should be sufficient to flip the data used in horizontal charts