VictoryCursorContainer
VictoryCursorContainer
adds a cursor to a chart to inspect coordinates.
The cursor can either be a 2-dimensional crosshair, or a 1-dimensional line.
The cursor moves with the mouse (or on touch on mobile devices) along the visible domain of the chart.
The cursor can also display a label for the active coordinates using the cursorLabel
prop.
VictoryCursorContainer
may be used with any Victory component that works with an x-y coordinate
system, and should be added as the containerComponent
of the top-level component.
However, the component that uses it must be standalone
(standalone={true}
), which is the default for all top-level Victory components.
Note that the cursor allows you to inspect the entire domain, not just the data points. If you would like to instead highlight only the data points, consider using VictoryVoronoiContainer.
<VictoryScatter containerComponent={ <VictoryCursorContainer cursorLabel={({ datum }) => `${round(datum.x, 2)}, ${round(datum.y, 2)}`} /> } />
VictoryCursorContainer
uses a superset of props used by VictoryContainer. All props are optional.
cursorComponent
type: element
The cursorComponent
prop takes a component instance which will be used to render a cursor element. The new element created will be supplied with x1
, y1
, x2
and y2
positioning props. If a cursorComponent
is not supplied, a new LineSegment component will be rendered.
default: cursorComponent={<LineSegment/>}
cursorDimension
type: "x" || "y"
When the cursorDimension
prop is set, the cursor will be a line to inspect the given dimension
(either "x" or "y"). When this prop is not specified, the cursor will be a 2-dimensional crosshair.
For example, if you would like to inspect the time of time-series data, set dimension={"x"}
;
the cursor will then be a vertical line that will inspect the time value of the current mouse position.
example: cursorDimension="x"
<VictoryScatter containerComponent={ <VictoryCursorContainer cursorDimension="x" cursorLabel={({ datum }) => `${round(datum.x, 2)}, ${round(datum.y, 2)}`} /> } />
cursorLabel
type: function
The cursorLabel
prop defines the label that will appear next to the cursor.
A label will only appear if cursorLabel
is set. This prop should be given as a function of a point (an Object with x
and y
properties).
example: cursorLabel={(point) => point.x}
cursorLabelComponent
type: element
The cursorLabelComponent
prop takes a component instance which will be used to render a label for the cursor. The new element created from the passed cursorLabelComponent
will be supplied with the following props: x
, y
, active
, text
. If cursorLabelComponent
is omitted, a new VictoryLabel will be created with the props described above.
default: cursorLabelComponent={<VictoryLabel/>}
cursorLabelOffset
type: number || { x: number, y: number }
The cursorLabelOffset
prop determines the pixel offset of the cursor label from the cursor point.
This prop should be an Object with x
and y
properties, or a number to be used for both dimensions.
default: cursorLabelOffset={{ x: 5, y: -10 }}
defaultCursorValue
type: number || { x: number, y: number }
Whenever the mouse is not over the chart, the cursor will not be displayed.
If instead you would like to keep it displayed, use the defaultCursorValue
prop to set the default value. The prop should be a point (an Object with x
and y
properties) for 2-dimensional cursors, or a number for 1-dimensional cursors.
examples: defaultCursorValue={{x: 1, y: 1}}
, defaultCursorValue={0}
disable
type: boolean
When the disable
prop is set to true
, VictoryCursorContainer
events will not fire.
onCursorChange
type: function
If provided, the onCursorChange
function will be called every time the cursor value changes. onCursorChange
is called with value
(the updated cursor value) and props
(the props used by VictoryCursorContainer
). A common use for onCursorChange
is to save the cursor value to state and use it in another part of the view.
example: onCursorChange={(value, props) => this.setState({cursorValue: value})}