VictorySelectionContainer

VictorySelectionContainer is used to enable selecting data points within a highlighted region. Clicking and dragging will select an x-y region, and add the active prop to any elements corresponding to data points within the region. Create a select-box control by tying the set of selected data points to other elements, such as a filtered table.

VictorySelectionContainer is similar to VictoryBrushContainer. VictoryBrushContainer may be used to identify the domain of a selected region, whereas VictorySelectionContainer may be used to identify a list of data points within a selected region. VictoryBrushContainer will also create persistent highlighted regions, whereas regions created by VictorySelectionContainer disappear after onMouseUp events.

VictorySelectionContainer 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.

<VictoryChart containerComponent={<VictorySelectionContainer/>}>
  <VictoryScatter
    style={{ data: { fill: ({ active }) => active ? "tomato" : "gray" } }}
  />
</VictoryChart>

VictorySelectionContainer uses a superset of props used by VictoryContainer. All props are optional.

activateSelectedData

type: boolean

When the activateSelectedData prop is set to true, the active prop will be set to true on all selected data points. When this prop is set to false, the onSelection and onSelectionCleared callbacks will still fire, but no mutations will occur via Victory's event system.

default: activateSelectedData={true}

disable

type: boolean

When the disable prop is set to true, VictorySelectionContainer events will not fire.

onSelection

type: function

The onSelection prop accepts a function to be called whenever new data points are selected. The function is called with the parameters points (an array of objects with childName, eventKey, and data), bounds (an object with min / max arrays specified for x and y), and props (the props used by VictorySelectionContainer)

example: onSelection={(points, bounds, props) => handleSelection(points, bounds, props)}

onSelectionCleared

type: function

The onSelectionCleared prop accepts a function to be called whenever the selection is cleared. The function is called with the props used by VictorySelectionContainer

example: onSelectionCleared={(props) => handleSelectionCleared(props)}

selectionBlacklist

type: array[string]

The selectionBlacklist prop is used to exclude data from potential selections. This prop should be given as an array of strings that match the name prop of Victory component that should be excluded from selection.

example: selectionBlackList={["first-line", "second-line"]}

selectionComponent

type: element

The selectionComponent prop specifies the element to be rendered for the selected area. When this prop is not specified, a <rect/> will be rendered. This component will be supplied with the following props: x, y, width, height, and style.

default: selectionComponent={<rect/>}

selectionDimension

type: "x" || "y"

When the selectionDimension prop is set, the selection will only take the given dimension into account. For example, when dimension is set to "x", the selected area will cover the entire y domain regardless of mouse position.

example: selectionDimension="x"

<VictoryChart
  containerComponent={
    <VictorySelectionContainer selectionDimension="x"/>
  }
>
  <VictoryScatter
    style={{ data: { fill: ({ active }) => active ? "tomato" : "gray" } }}
  />
</VictoryChart>

selectionStyle

type: object

The selectionStyle prop should be given as an object of style attributes to be applied to the selectionComponent

default: selectionStyle={{stroke: "transparent", fill: "black", fillOpacity: 0.1}}

<VictoryChart
  containerComponent={
    <VictorySelectionContainer
      selectionStyle={{
        fill: "tomato", fillOpacity: 0.5,
        stroke: "tomato", strokeWidth: 2
      }}
    />
  }
>
  <VictoryScatter
    style={{ data: { fill: ({ active }) => active ? "tomato" : "gray" } }}
  />
</VictoryChart>