Scatter Chart with many points (performance test)
Renders multiple Scatter elements with multiple points in them. Edit this example to add or remove data points and observe performance.
import { CartesianGrid, Scatter, ScatterChart, Tooltip, XAxis, YAxis, ZAxis } from 'recharts';
import { between, random, RechartsDevtools } from '@recharts/devtools';
const gen = random(42);
const countOfScatterElements = 100;
const pointsPerScatter = 10;
const datasets = Array.from({ length: countOfScatterElements }, (_1, i) => {
const passed = between(gen, 0, 10) > 5;
return {
name: `line-${i}`,
passed,
points: Array.from({ length: pointsPerScatter }, _2 => ({
x: between(gen, 0, 100),
y: between(gen, 0, 100),
z: between(gen, 0, 100),
})),
};
});
export default function ScatterChartPerformance() {
return (
<ScatterChart
style={{ width: '100%', maxWidth: '700px', maxHeight: '70vh', aspectRatio: 1.618 }}
responsive
margin={{
top: 20,
right: 0,
bottom: 0,
left: 0,
}}
>
<CartesianGrid />
<XAxis dataKey="x" type="number" unit="m" domain={[0, 1]} />
<YAxis dataKey="y" type="number" unit="m" domain={[0, 100]} />
<ZAxis dataKey="z" range={[0, 100]} />
<Tooltip />
{datasets.map(line => (
<Scatter
key={line.name}
data={line.points}
fill={line.passed ? '#22c55e' : '#ef4444'}
isAnimationActive={false}
name={line.name}
strokeWidth={4}
/>
))}
<RechartsDevtools />
</ScatterChart>
);
}