VictoryCandlestick
VictoryCandlestick renders a dataset as a series of candlesticks. VictoryCandlestick can be composed with VictoryChart
to create candlestick charts.
<VictoryChart theme={VictoryTheme.material} domainPadding={{ x: 25 }} scale={{ x: "time" }} > <VictoryAxis tickFormat={(t) => `${t.getDate()}/${t.getMonth()}`}/> <VictoryAxis dependentAxis/> <VictoryCandlestick candleColors={{ positive: "#5f5c5b", negative: "#c43a31" }} data={sampleDataDates} /> </VictoryChart>
animate
type: boolean || object
VictoryCandlestick
uses the standard animate
prop. Read about it here
See the Animations Guide for more detail on animations and transitions
animate={{ duration: 2000, onLoad: { duration: 1000 } }}
candleColors
type: { positive: string, negative: string }
Candle colors are significant in candlestick charts, with colors indicating whether a market closed higher than it opened (positive), or closed lower than it opened (negative). The candleColors
prop should be given as an object with color strings specified for positive and negative.
default (provided by default theme): candleColors={{positive: "white", negative: "black"}}
<VictoryCandlestick candleColors={{ positive: "#5f5c5b", negative: "#c43a31" }} data={sampleDataDates} />
candleRatio
type: number
The candleRatio
prop specifies an approximate ratio between candle widths and spaces between candles. When width is not specified via the candleWidth
prop or in candle styles, the candleRatio
prop will be used to calculate a default width for each candle given the total number of candles in the data series and the overall width of the chart.
<VictoryCandlestick candleRatio={0.8} data={sampleDataDates} />
candleWidth
type: number || function
The candleWidth
prop is used to specify the width of each candle. This prop may be given as a number of pixels or as a function that returns a number. When this prop is given as a function, it will be evaluated with a single argument: an object containing all the props passed to the Candle
component. When this value is not given, a default value will be calculated based on the overall dimensions of the chart, and the number of candles.
Note: It is still possible to define candle width via the style prop with the width
attribute, but candleWidth
will take precedence.
<VictoryCandlestick candleWidth={55} data={sampleDataDates} />
categories
type: array[string] || { x: array[string], y: array[string] }
VictoryCandlestick
uses the standard categories
prop. Read about it here
categories={{ x: ["dogs", "cats", "mice"] }}
close
type: string || integer || array[string] || function
Use close
data accessor prop to define the close value of a candle.
string: specify which property in an array of data objects should be used as the close value
examples: close="closing_value"
function: use a function to translate each element in a data array into a close value
examples: close={() => 10}
array index: specify which index of an array should be used as a close value when data is given as an array of arrays
examples: close={1}
path string or path array: specify which property in an array of nested data objects should be used as a close value
examples: close="bonds.close"
, close={["bonds", "close"]}
closeLabelComponent
type: element
The closeLabelComponent
prop takes a component instance which will be used to render the label corresponding to the close value for each candle. The new element created from the passed closeLabelComponent
will be supplied with the following props: x
, y
, datum
, index
, scale
, verticalAnchor
, textAnchor
, angle
, transform
, style
and events
. Any of these props may be overridden by passing in props to the supplied component, or modified or ignored within the custom component itself. If closeLabelComponent
is omitted, a new [VictoryLabel
][] will be created with props described above.
See the Custom Components Guide for more detail on creating your own components
default: closeLabelComponent={<VictoryLabel/>}
closeLabelComponent={<VictoryLabel dy={20}/>}
<VictoryCandlestick data={sampleDataDates} closeLabels closeLabelComponent={ <VictoryLabel dx={-30} textAnchor="middle" /> } />
closeLabels
type: array || function || boolean
The closeLabels
prop defines the labels that will correspond to the close value for each candle. This prop should be given as a boolean, an array or as a function of the props corresponding to that label. When given as a boolean value, the max value of each datum will be used for the label.
examples:
closeLabels
closeLabels={["first", "second", "third"]}
closeLabels={({ datum }) => Math.round(datum.close)}
containerComponent
type: element
VictoryCandlestick
uses the standard containerComponent
prop. Read about it here
containerComponent={<VictoryVoronoiContainer/>}
data
type: array[object]
Specify data via the data
prop. By default, VictoryCandlestick
expects data as an array of objects with x
, open
, close
, high
, and low
keys. Use the x
, open
, close
, high
, and low
data accessor props to specify custom data formats. Refer to the Data Accessors Guide for more detail.
<VictoryCandlestick data={[ {x: new Date(2016, 6, 1), open: 5, close: 10, high: 15, low: 0}, {x: new Date(2016, 6, 2), open: 10, close: 15, high: 20, low: 5}, {x: new Date(2016, 6, 3), open: 15, close: 20, high: 22, low: 10}, {x: new Date(2016, 6, 4), open: 20, close: 10, high: 25, low: 7}, {x: new Date(2016, 6, 5), open: 10, close: 8, high: 15, low: 5} ]} />
dataComponent
type: element
VictoryCandlestick
uses the standard dataComponent
prop. Read about it here
VictoryCandlestick
supplies the following props to its dataComponent
: data
, datum
, index
, padding
, polar
, origin
, scale
, style
, candleHeight
, x1
, y1
, y2
, x2
See the Custom Components Guide for more detail on creating your own dataComponents
default: <Candle/>
dataComponent={<Candle events={{ onClick: handleClick }}/>}
domain
type: array[low, high] || { x: [low, high], y: [low, high] }
VictoryCandlestick
uses the standard domain
prop. Read about it here
domain={{x: [0, 100], y: [0, 1]}}
domainPadding
type: number || array[left, right] || { x: [left, right], y: [bottom, top] }
VictoryCandlestick
uses the standard domainPadding
prop. Read about it here
domainPadding={{x: [10, -10], y: 5}}
eventKey
type: string || integer || array[string] || function
VictoryCandlestick
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]
VictoryCandlestick
uses the standard events
prop. Read about it here
See the Events Guide for more information on defining events.
<div> <h3>Click Me</h3> <VictoryCandlestick events={[{ target: "data", eventHandlers: { onClick: () => { return [ { target: "data", mutation: (props) => { const fill = props.style && props.style.fill; return fill === "#c43a31" ? null : { style: { fill: "#c43a31" } }; } } ]; } } }]} data={sampleDataDates} /> </div>
groupComponent
type: element
VictoryCandlestick
uses the standard groupComponent
prop. Read about it here
default: <g/>
groupComponent={<g transform="translate(10, 10)" />}
height
type: number
VictoryCandlestick
uses the standard height
prop. Read about it here
default (provided by default theme): height={300}
height={400}
high
type: string || integer || array[string] || function
Use high
data accessor prop to define the high value of a candle.
string: specify which property in an array of data objects should be used as the high value
examples: high="highest_value"
function: use a function to translate each element in a data array into a high value
examples: high={() => 10}
array index: specify which index of an array should be used as a high value when data is given as an array of arrays
examples: high={1}
path string or path array: specify which property in an array of nested data objects should be used as a high value
examples: high="bonds.high"
, high={["bonds", "high"]}
highLabelComponent
type: element
The highLabelComponent
prop takes a component instance which will be used to render the label corresponding to the highest value for each candle. The new element created from the passed highLabelComponent
will be supplied with the following props: x
, y
, datum
, index
, scale
, verticalAnchor
, textAnchor
, angle
, transform
, style
and events
. Any of these props may be overridden by passing in props to the supplied component, or modified or ignored within the custom component itself. If highLabelComponent
is omitted, a new [VictoryLabel
][] will be created with props described above.
See the Custom Components Guide for more detail on creating your own components
default: highLabelComponent={<VictoryLabel/>}
highLabelComponent={<VictoryLabel dy={20}/>}
<VictoryCandlestick data={sampleDataDates} highLabels highLabelComponent={ <VictoryLabel dx={-10} textAnchor="middle" /> } />
highLabels
type: array || function || boolean
The highLabels
prop defines the labels that will correspond to the high value for each candle. This prop should be given as a boolean, an array or as a function of the props corresponding to that label. When given as a boolean value, the max value of each datum will be used for the label.
examples:
highLabels
highLabels={["first", "second", "third"]}
highLabels={({ datum }) => Math.round(datum.high)}
horizontal
type: boolean
VictoryCandlestick
uses the standard horizontal
prop. Read about it in detail
<VictoryCandlestick horizontal data={sampleDataDates} />
labelComponent
type: element
VictoryCandlestick
uses the standard labelComponent
prop. Read about it here
default: <VictoryLabel/>
<VictoryCandlestick data={sampleDataDates} labels={({ datum }) => datum.open} style={{ labels: { fill: ({ datum}) => datum.close > datum.open ? "black" : "white" } }} labelComponent={ <VictoryLabel dx={({ text }) => text[0].length === 1 ? -4 : -8} /> } />
labelOrientation
type: "top", "bottom", "left", "right" || { open, close, low, high }
The labelOrientation
prop determines where a label should be placed in relation to the candle it corresponds to. This prop may be given as "top", "bottom", "left", "right", or as an object with an option defined for some or all of the labels.
<VictoryCandlestick data={sampleDataDates} closeLabels={() => "close"} highLabels={() => "high"} lowLabels={() => "low"} openLabels={() => "open"} style={{ labels: { padding: 4 } }} labelOrientation={{ close: "right", open: "right", high: "top", low: "bottom" }} />
labels
type: array || function
VictoryCandlestick
uses the standard labels
prop. Read about it here
<VictoryCandlestick data={sampleDataDates} labels={({ datum }) => `open: ${datum.open}`} />
low
type: string || integer || array[string] || function
Use low
data accessor prop to define the low value of a candle.
string: specify which property in an array of data objects should be used as the low value
examples: low="lowest_value"
function: use a function to translate each element in a data array into a low value
examples: low={() => 10}
array index: specify which index of an array should be used as a low value when data is given as an array of arrays
examples: low={1}
path string or path array: specify which property in an array of nested data objects should be used as a low value
examples: low="bonds.low"
, low={["bonds", "low"]}
lowLabelComponent
type: element
The lowLabelComponent
prop takes a component instance which will be used to render the label corresponding to the lowest value for each candle. The new element created from the passed lowLabelComponent
will be supplied with the following props: x
, y
, datum
, index
, scale
, verticalAnchor
, textAnchor
, angle
, transform
, style
and events
. Any of these props may be overridden by passing in props to the supplied component, or modified or ignored within the custom component itself. If lowLabelComponent
is omitted, a new [VictoryLabel
][] will be created with props described above.
See the Custom Components Guide for more detail on creating your own components
default: lowLabelComponent={<VictoryLabel/>}
lowLabelComponent={<VictoryLabel dy={20}/>}
<VictoryCandlestick data={sampleDataDates} lowLabels lowLabelComponent={<VictoryTooltip pointerLength={0}/>} events={[{ target: "data", eventHandlers: { onMouseOver: () => ({ target: "lowLabels", mutation: () => ({ active: true }) }), onMouseOut: () => ({ target: "lowLabels", mutation: () => ({ active: false }) }) } }]} />
lowLabels
type: array || function || boolean
The lowLabels
prop defines the labels that will correspond to the low value for each candle. This prop should be given as a boolean, an array or as a function of the props corresponding to that label. When given as a boolean value, the max value of each datum will be used for the label.
examples:
lowLabels
lowLabels={["first", "second", "third"]}
lowLabels={({ datum }) => Math.round(datum.low)}
maxDomain
type: number || { x: number, y: number }
VictoryCandlestick
uses the standard maxDomain
prop. Read about it in detail
<VictoryChart maxDomain={{ y: 30 }} scale={{ x: "time" }} > <VictoryCandlestick data={sampleDataDates} /> </VictoryChart>
minDomain
type: number || { x: number, y: number }
VictoryCandlestick
uses the standard minDomain
prop. Read about it in detail
<VictoryChart minDomain={{ y: 0 }} scale={{ x: "time" }} > <VictoryCandlestick data={sampleDataDates} /> </VictoryChart>
name
type: string
The name
prop is used to reference a component instance when defining shared events.
name = "series-1";
open
type: string || integer || array[string] || function
Use open
data accessor prop to define the open value of a candle.
string: specify which property in an array of data objects should be used as the open value
examples: open="opening_value"
function: use a function to translate each element in a data array into an open value
examples: open={() => 10}
array index: specify which index of an array should be used as an open value when data is given as an array of arrays
examples: open={1}
path string or path array: specify which property in an array of nested data objects should be used as an open value
examples: open="bonds.open"
, open={["bonds", "open"]}
openLabelComponent
type: element
The openLabelComponent
prop takes a component instance which will be used to render the label corresponding to the open value for each candle. The new element created from the passed openLabelComponent
will be supplied with the following props: x
, y
, datum
, index
, scale
, verticalAnchor
, textAnchor
, angle
, transform
, style
and events
. Any of these props may be overridden by passing in props to the supplied component, or modified or ignored within the custom component itself. If openLabelComponent
is omitted, a new [VictoryLabel
][] will be created with props described above.
See the Custom Components Guide for more detail on creating your own components
default: openLabelComponent={<VictoryLabel/>}
openLabelComponent={<VictoryLabel dy={20}/>}
<VictoryCandlestick data={sampleDataDates} openLabels openLabelComponent={ <VictoryLabel dx={-30} textAnchor="middle" /> } />
openLabels
type: array || function || boolean
The openLabels
prop defines the labels that will correspond to the open value for each candle. This prop should be given as a boolean, an array or as a function of the props corresponding to that label. When given as a boolean value, the max value of each datum will be used for the label.
examples:
openLabels
openLabels={["first", "second", "third"]}
openLabels={({ datum }) => Math.round(datum.open)}
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 }
VictoryCandlestick
uses the standard padding
prop. Read about it here
default (provided by default theme): padding={50}
padding={{ top: 20, bottom: 60 }}
polar
type: boolean
VictoryCandlestick
uses the standard polar
prop. Read about it here
note: Polar Charts are not yet supported for VictoryCandlestick
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
VictoryCandlestick
uses the standard samples
prop. Read about it here
default: samples={50}
samples={100}
scale
type: scale || { x: scale, y: scale }
VictoryCandlestick
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 }
VictoryCandlestick
uses the standard singleQuadrantDomainPadding
prop. Read about it here
sortKey
type: string || integer || array[string] || function
VictoryCandlestick
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
VictoryCandlestick
uses the standard standalone
prop. Read about it here
note: When VictoryCandlestick
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"/> <VictoryCandlestick standalone={false} width={300} height={300} data={sampleDataDates} /> </svg>
style
type: {
parent: object,
data: object,
labels: object,
closeLabels: object,
highLabels: object,
lowLabels: object,
openLabels: object
}
The style
prop defines the style of the component. The style prop should be given as an object with styles defined for parent
, data
, labels
, closeLabels
, highLabels
,lowLabels
, and openLabels
. Any valid svg styles are supported, but width
, height
, and padding
should be specified via props as they determine relative layout for components in VictoryChart. Functional styles may be defined for style properties, and they will be evaluated with the props corresponding to each element.
note: When a component is rendered as a child of another Victory component, or within a custom <svg>
element with standalone={false}
parent styles will be applied to the enclosing <g>
tag. Many styles that can be applied to a parent <svg>
will not be expressed when applied to a <g>
.
note: custom angle
and verticalAnchor
properties may be included in labels
styles.
default (provided by default theme): See grayscale theme for more detail
<VictoryCandlestick data={sampleDataDates} labels={() => "labels"} closeLabels={() => "close"} highLabels={() => "high"} lowLabels={() => "low"} openLabels={() => "open"} style={{ data: { fill: "#c43a31", fillOpacity: 0.7, stroke: "#c43a31", strokeWidth: 3 }, labels: { fill: "tomato", padding: 2 }, closeLabels: { fill: "orange", padding: 2 }, highLabels: { fill: "blue", padding: 2 }, lowLabels: { fill: "teal", padding: 2 }, openLabels: { fill: "green", padding: 2 }, }} />
theme
type: object
VictoryCandlestick
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}
wickStrokeWidth
type: number
When the wickStrokeWidth
prop is set, this value will be used to determine the stroke width for the candle wick. When this prop is not set, the strokeWidth
set by the style
prop will apply to both the candle and the wick.
width
type: number
VictoryCandlestick
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
VictoryCandlestick
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={(datum) => new Date(datum.day)}