There are an array of charting libraries that can be used in React projects. Here are three examples of charting libraries which are easy to use.
import { LineChart, Line, CartesianGrid, XAxis, YAxis, Tooltip } from 'recharts';
const data = [{name: 'Page A', uv: 400, pv: 2400, amt: 2400}, ...];
const renderLineChart = (
<LineChart width={600} height={300} data={data} margin={{ top: 5, right: 20, bottom: 5, left: 0 }}>
<Line type="monotone" dataKey="uv" stroke="#8884d8" />
<CartesianGrid stroke="#ccc" strokeDasharray="5 5" />
<XAxis dataKey="name" />
<YAxis />
<Tooltip />
</LineChart>
);
import React from 'react';
import ReactDOM from 'react-dom';
import * as V from 'victory';
import { VictoryBar } from 'victory';
const data = [
{quarter: 1, earnings: 13000},
{quarter: 2, earnings: 16500},
{quarter: 3, earnings: 14250},
{quarter: 4, earnings: 19000}
];
class Main extends React.Component {
render() {
return (
<div>
<VictoryBar/>
</div>
);
}
}
const app = document.getElementById('app');
ReactDOM.render(<Main />, app);
import React from 'react';
import { Group } from '@vx/group';
import { LinePath } from '@vx/shape';
import { curveMonotoneX } from '@vx/curve';
import { genDateValue } from '@vx/mock-data';
import { scaleTime, scaleLinear } from '@vx/scale';
import { extent, max } from 'd3-array';
function genLines(num) {
return new Array(num).fill(1).map(() => {
return genDateValue(25);
});
}
const series = genLines(12);
const data = series.reduce((rec, d) => {
return rec.concat(d);
}, []);
// accessors
const x = d => d.date;
const y = d => d.value;
export default ({ width, height }) => {
// bounds
const xMax = width;
const yMax = height / 8;
// scales
const xScale = scaleTime({
range: [0, xMax],
domain: extent(data, x)
});
const yScale = scaleLinear({
range: [yMax, 0],
domain: [0, max(data, y)]
});
return (
<svg width={width} height={height}>
<rect x={0} y={0} width={width} height={height} fill="#242424" rx={14} />
{xMax > 8 &&
series.map((d, i) => {
return (
<Group key={`lines-${i}`} top={i * yMax / 2}>
<LinePath
data={d}
x={d => xScale(x(d))}
y={d => yScale(y(d))}
stroke={'#ffffff'}
strokeWidth={1}
curve={i % 2 == 0 ? curveMonotoneX : undefined}
/>
</Group>
);
})}
</svg>
);
};