[javascript] Recharts에서 차트의 범위를 동적으로 변경하는 방법은 무엇인가요?
Recharts에서는 다양한 유형의 차트를 생성할 수 있지만, 여기서는 간단한 선 그래프를 예로 들겠습니다. 우선, 필요한 모듈들을 import 해줍니다.
import React, { useState } from 'react';
import { LineChart, Line, XAxis, YAxis, CartesianGrid, Tooltip, Legend } from 'recharts';
다음으로, 데이터를 정의합니다. 이 데이터는 동적으로 변경될 범위를 가지는 배열 형태로 되어 있어야 합니다.
const data = [
{ name: 'Jan', value: 400 },
{ name: 'Feb', value: 300 },
{ name: 'Mar', value: 600 },
{ name: 'Apr', value: 800 },
{ name: 'May', value: 400 },
// ...
];
이제 범위를 변경할 수 있는 상태값을 useState를 이용하여 정의합니다.
const [range, setRange] = useState(600);
여기서는 600이 기본 범위 값입니다. 이 값을 동적으로 변경하여 차트의 범위를 조절할 수 있습니다.
마지막으로, LineChart 컴포넌트를 사용하여 차트를 생성하고, XAxis와 YAxis의 domain 속성을 이용해 범위를 지정합니다.
<LineChart width={500} height={300} data={data}>
<CartesianGrid strokeDasharray="3 3" />
<XAxis dataKey="name" />
<YAxis domain={[0, range]} />
<Tooltip />
<Legend />
<Line type="monotone" dataKey="value" stroke="#8884d8" activeDot={{ r: 8 }} />
</LineChart>
여기서 YAxis의 domain 속성을 [0, range]
으로 설정하여 범위를 동적으로 변경할 수 있습니다. 이렇게 설정하면, range 값에 따라 차트의 Y 축 범위가 동적으로 조절됩니다.
이제 컴포넌트를 렌더링하고, range 값을 변경하는 기능을 추가하면 됩니다.
function App() {
const [range, setRange] = useState(600);
const handleRangeChange = (event) => {
setRange(parseInt(event.target.value));
};
return (
<div>
<input type="range" min="100" max="1000" value={range} onChange={handleRangeChange} />
<LineChart width={500} height={300} data={data}>
{/* 차트 설정 생략 */}
</LineChart>
</div>
);
}
위 코드를 참고하여 Recharts에서 차트 범위를 동적으로 변경하는 방법을 확인해보세요.