์ด๋ฐ ํํ์ ๋ง๋๊ทธ๋ํ๋ฅผ ๋ง๋ค์ด๋ณด๋๋ก ํ ๊ฒ์ด๋ค.
1. ๊ฐ์
๋ฆฌ์กํธ์์ ์ฌ์ฉ๊ฐ๋ฅํ ์ฐจํธ ๋ผ์ด๋ธ๋ฌ๋ฆฌ๋ ๊ฝค๋ ๋ง์๋ฐ ๋๋ ๋ฑ ๊ธฐ๋ณธ ํํ์ ๋ง๋ ๊ทธ๋ํ ๊ฐ ํ์ํ์ฌ ์ ์ผ ๋ณด๊ธฐ์ ์ฝ๋๊ฐ ์ฌ์๋ณด์ด๋ Recharts ๋ผ๋ ๋ผ์ด๋ธ๋ฌ๋ฆฌ๋ฅผ ์ฑํํ์๋ค.
ํน์๋ ๋ณต์กํ ํํ์ ์ฐจํธ๊ฐ ํ์ํ๋ค๋ฉด.. Nivo.rocks, React Vis, Apexcharts, Victory, Chartjs, Highcharts ๋ฑ ๋ค์ํ ๋ผ์ด๋ธ๋ฌ๋ฆฌ๋ค์ ๊ตฌ๊ฒฝํด๋ณด๋ ๊ฒ๋ ์ข์ ๊ฒ ๊ฐ๋ค.
๋๋ ์ฐธ๊ณ ๋ก ๋ฆฌ์กํธ ๊ทธ๋ํ/์ฐจํธ ๋ผ์ด๋ธ๋ฌ๋ฆฌ ๋ชจ์ ์ด๋ผ๋ ๊ธ์ ์ฐธ๊ณ ํ์ฌ ๋ผ์ด๋ธ๋ฌ๋ฆฌ๋ฅผ ๊ณจ๋๋ค.
๋๊ฐ์ ์ฐจํธ ๊ธฐ๋ฅ์ ํ๋ ๋ผ์ด๋ธ๋ฌ๋ฆฌ๋ผ ํ๋๋ผ๋, ๊ฐ๊ฐ ๋ค๋ฅธ ํน์ง์ด ์์ผ๋ ์ด๋ฐ ๊ฒ๋ ๊ณ ๋ คํ๋ฉด ์ข์ ๋ฏ ํ๋ค.
2. ์ฌ์ฉ๋ฒ
1. ๋ผ์ด๋ธ๋ฌ๋ฆฌ ์ค์น
$ npm install recharts
์ค์น๊ฐ ์ ๋์๋์ง ํ์ธํ๋ ค๋ฉด package.json ์์ "recharts" ๋ถ๋ถ์ ํ์ธํด์ฃผ๋ฉด ๋๋ค.
2. ์ฝ๋ ์ ์ฉํ๊ธฐ
์ด ๊ณณ์์ ์ฐจํธ ๋ชจ์ ์ผํ์ ์ข ํ๋ฉด์ ๊ตฌ๊ฒฝํด๋ณด๋ค๊ฐ ์ํ๋ ์ฐจํธ๋ฅผ ์ ํํด์ค๋ค.
๋๋ BarChart ์ TinyBarChart ๋ฅผ ์ฑํํ์๋ค.
๋ฐ๋ก ์์ ๋จ๋ ์ฝ๋๋ฅผ ๋ณต๋ถํด์ฃผ๋ฉด ์ด๋๋ก ๋จน์ฌ์ง๋ค.
์ค๋ช ์ ์งํํด๋ณด์๋ฉด
๋จผ์ ์ฐจํธ๋ฅผ ๊ทธ๋ฆฌ๊ณ ์ํ๋ ์ปดํฌ๋ํธ์ import๋ฅผ ํด์ฃผ๊ณ
import React, { PureComponent } from 'react';
import { BarChart, Bar,
Cell, XAxis,
YAxis, CartesianGrid,
Tooltip, Legend,
ResponsiveContainer } from 'recharts';
๋์ ์๋ ์ฝ๋๋ฅผ ๊ทธ๋๋ก ๋ณต์ฌํด์ ๋ถํ๋ฃ๊ธฐ ํด์ฃผ๋ฉด ๋๋ค.
const data = [
{
name: 'Page A',
uv: 4000,
pv: 2400,
amt: 2400,
},
{
name: 'Page B',
uv: 3000,
pv: 1398,
amt: 2210,
},
{
name: 'Page C',
uv: 2000,
pv: 9800,
amt: 2290,
},
{
name: 'Page D',
uv: 2780,
pv: 3908,
amt: 2000,
},
{
name: 'Page E',
uv: 1890,
pv: 4800,
amt: 2181,
},
{
name: 'Page F',
uv: 2390,
pv: 3800,
amt: 2500,
},
{
name: 'Page G',
uv: 3490,
pv: 4300,
amt: 2100,
},
];
export default class Example extends PureComponent {
static demoUrl = 'https://codesandbox.io/s/tiny-bar-chart-35meb';
render() {
return (
<ResponsiveContainer width="100%" height="100%">
<BarChart width={150} height={40} data={data}>
<Bar dataKey="uv" fill="#8884d8" />
</BarChart>
</ResponsiveContainer>
);
}
}
๊ทธ๋ฌ๋ฉด ์์ ๋๊ฐ์ ์ฐจํธ๊ฐ ๋พฐ๋กฑํ๊ณ ๋ํ๋๊ฒ ๋๊ณ .. ์์ฑ์ด๋ค.
3. ์ ์ฉํ๊ธฐ
๋๋ ์์ ์ฐจํธ๊ฐ ์ด์๊ธด ํ์ง๋ง ์ ๋ฒ ๋ถ์น์ ํด๋ณด์ด๋ ๋ชจ์์์ฌ์ ์กฐ๊ธ ์์ ํด์ ๋ฃ์ด๋๊ธฐ๋ก ํ๋ค.
๋๋ ๋ถ์๋ณ ๊ฐ์ ํ์ธ์ ์ํ ์ฉ๋๋ก ์ฐจํธ๋ฅผ ์ฌ์ฉํ ๊ฒ์ด๋ผ x์ถ ํ๊ทธ ์๋ ๋ถ์๊ฐ ๋ถ์ด์ผ ํ๊ณ , y์ถ ํ๊ทธ์๋ ๊ฐ์ ๊ฐ ๋ถ์ด์ฃผ๋๊ฒ ๊ฐ์์ฑ ํฅ์์ ์ข์ ๊ฒ ๊ฐ๋ค๋ ํ๋จ์ ํ๋ค.
์ผ๋จ import ๋ถํฐ..
๊ทผ๋ฐ ์์ฒ๋ผ ๋ค import ํ ํ์๋ ์๊ณ ํ์ํ ์ ๋ค๋ง import
import { BarChart, Bar, XAxis, YAxis } from "recharts";
๋ค์์ ์ฝ๋
const data = [
{
name: "๋ถ์ 1",
num: 5
},
{
name: "๋ถ์ 2",
num: 3
},
{
name: "๋ถ์ 3",
num: 1
},
{
name: "๋ถ์ 4",
num: 2
}
,
{
name: "๋ถ์ 5",
num: 4
},
{
name: "๋ถ์ 6",
num: 2
}
];
export default function App() {
return (
<BarChart width={500} height={200} data={data}>
<Bar dataKey="num" fill="#8884d8" />
<XAxis dataKey="name" />
<YAxis />
</BarChart>
);
}
num ์ ๊ฐ์ ๋ฅผ ์๋ฏธํ๋ค. ๊ทธ๋ฆฌ๊ณ x์ถ ์๋ ์ด๋ฆ ์ ๋ฃ์ด์ค๊ฑฐ๊ณ , y์ถ ์๋ ๊ฐ์ ๋ฅผ ํ์ํด์ค๊ฒ์ด๋ค.
์์ ํด์ ์ฐ๋๋ฐ์ ๋์์ด ๋๊ธธ ๋ฐ๋ผ๋ฉฐ ์ด๋ง React Recharts ๋ผ์ด๋ธ๋ฌ๋ฆฌ ์ฌ์ฉ๊ธ์ ๋ง์นฉ๋๋น