Scatter
(Component)
The Scatter
component takes a PointsArray
prop, as well as some options for styling/animating, and returns a Skia Path
element to draw the scatter plot.
Example
import { CartesianChart, Scatter } from "victory-native";
import DATA from "./my-data";
export function MyChart() {
return (
<CartesianChart data={DATA} xKey="x" yKeys={["y"]}>
{({ points }) => (
//👇 pass a PointsArray to the Scatter component
<Scatter
points={points.y}
shape="star"
radius={10}
style="fill"
color="red"
/>
)}
</CartesianChart>
);
}
Props
points
A PointsArray
array that comes from a field of the points
object exposed the children
render function of CartesianChart
, as illustrated in the example above.
radius
An optional number
value or (pt: PointsArray[number]) => number
function representing the radius of the individual scatter elements (e.g. radius of the circle, half the width of the square).
Pass a number
to use the same radius for all of the scatter points. If you'd to use a dynamic radius per-point, you can pass a function that allows you to determine radius on a point-by-point basis.
The following snippet shows how to make the points' radius be based on the value of the point. The smallest-value point will have a radius of 5, and the largest-value point will have a radius of 20.
import { interpolate } from "react-native-reanimated";
// ...
<CartesianChart data={data} xKey="x" yKeys={["y"]}>
{({ points }) => {
// 👇 compute min/max values
const min = Math.min(...points.y.map((p) => p.yValue));
const max = Math.max(...points.y.map((p) => p.yValue));
return (
<>
<Scatter
points={points.y}
// 👇 and interpolate from 5 to 20 for radius size.
radius={(pt) => interpolate(pt.yValue, [min, max], [5, 20])}
/>
</>
);
}}
</CartesianChart>;
shape
One of the following ScatterShape
values that determines the shape of each point to be drawn.
type ScatterShape = "circle" | "square" | "star";
animate
The animate
prop takes a PathAnimationConfig
object and will animate the path when the points change.
children
A children
pass-thru that will be rendered inside of the Skia Path
element, useful if you'd like to make e.g. a gradient path.
Paint properties
The Line
component will also pass the following painting props down to the underlying Path
component:
style
color
blendMode
opacity
antiAlias
start
end
strokeWidth
stroke
strokeJoin
strokeCap