[javascript] Recharts에서 차트의 확대/축소 기능을 추가하는 방법은 무엇인가요?
Zoomable 컴포넌트 사용하기
Recharts에서 제공하는 Zoomable 컴포넌트는 차트를 확대하고 축소할 수 있는 기능을 제공합니다. 다음은 Zoomable 컴포넌트를 사용하여 확대/축소 기능을 추가하는 예시 코드입니다.
import React from 'react';
import { LineChart, Line, XAxis, YAxis, Zoomable } from 'recharts';
const data = [
{ name: 'Jan', value: 100 },
{ name: 'Feb', value: 200 },
{ name: 'Mar', value: 150 },
// 이하 데이터 생략
];
const Chart = () => {
return (
<LineChart width={500} height={300} data={data}>
<Zoomable>
<XAxis dataKey="name" />
<YAxis />
<Line type="monotone" dataKey="value" stroke="#8884d8" />
</Zoomable>
</LineChart>
);
}
export default Chart;
위의 코드에서는 Zoomable
컴포넌트를 LineChart
컴포넌트로 감싸고 있습니다. 이제 차트를 렌더링하면 화면에서 확대/축소 기능을 사용할 수 있게 됩니다.
React의 state와 이벤트 핸들러 사용하기
두 번째 방법은 React의 state와 이벤트 핸들러를 사용하여 확대/축소 기능을 구현하는 것입니다. 다음은 React Hooks를 사용하여 확대/축소 기능을 추가하는 예시 코드입니다.
import React, { useState } from 'react';
import { LineChart, Line, XAxis, YAxis } from 'recharts';
const data = [
{ name: 'Jan', value: 100 },
{ name: 'Feb', value: 200 },
{ name: 'Mar', value: 150 },
// 이하 데이터 생략
];
const Chart = () => {
const [zoomed, setZoomed] = useState(false);
const handleToggleZoom = () => {
setZoomed(!zoomed);
}
return (
<div>
<button onClick={handleToggleZoom}>Toggle Zoom</button>
<LineChart width={500} height={300} data={data} zoomEnabled={zoomed}>
<XAxis dataKey="name" />
<YAxis />
<Line type="monotone" dataKey="value" stroke="#8884d8" />
</LineChart>
</div>
);
}
export default Chart;
위의 코드에서는 useState
훅을 사용하여 zoomed
라는 상태 값을 관리하고, handleToggleZoom
함수를 통해 상태 값을 변경합니다. LineChart
컴포넌트의 zoomEnabled
prop을 zoomed
값을 사용하도록 설정하여 확대/축소 기능을 제어합니다. Toggle Zoom 버튼을 클릭하면 확대/축소가 가능한 차트로 전환됩니다.
이러한 방법으로 Recharts에서 차트의 확대/축소 기능을 추가할 수 있습니다. 선택한 방법에 따라 코드를 작성하고, 필요에 따라 스타일링을 추가하여 원하는 결과를 얻을 수 있습니다.