1. Line Chart (선형 차트)
- 특징: 시계열 데이터, 추세 표현에 적합
- 주요 컴포넌트: `<LineChart>`, `<Line>`, `<XAxis>`, `<YAxis>`, `<CartesianGrid>`, `<Tooltip>`
import { LineChart, Line, XAxis, YAxis, CartesianGrid, Tooltip } from 'recharts';
const data = [
{ name: 'Page A', uv: 400 },
{ name: 'Page B', uv: 300 },
{ name: 'Page C', uv: 200 },
];
export const MyLineChart = () => (
<LineChart width={400} height={300} data={data}>
<CartesianGrid strokeDasharray="3 3" />
<XAxis dataKey="name" />
<YAxis />
<Tooltip />
<Line type="monotone" dataKey="uv" stroke="#8884d8" />
</LineChart>
);
2. Bar Chart (막대 차트)
- 특징: 범주별 수치 비교
- 주요 컴포넌트: `<BarChart>`, `<Bar>`, `<XAxis>`, `<YAxis>`, `<Tooltip>`
import { BarChart, Bar, XAxis, YAxis, Tooltip } from 'recharts';
const data = [
{ name: 'Group A', value: 120 },
{ name: 'Group B', value: 200 },
];
export const MyBarChart = () => (
<BarChart width={400} height={300} data={data}>
<XAxis dataKey="name" />
<YAxis />
<Tooltip />
<Bar dataKey="value" fill="#82ca9d" />
</BarChart>
);
3. Pie Chart (원형 차트)
- 특징: 비율 표현
- 주요 컴포넌트: `<PieChart>`, `<Pie>`, `<Cell>`, `<Tooltip>`, `<Legend>`
import { PieChart, Pie, Cell, Tooltip, Legend } from 'recharts';
const data = [
{ name: 'A', value: 25 },
{ name: 'B', value: 35 },
];
const COLORS = ['#0088FE', '#00C49F'];
export const MyPieChart = () => (
<PieChart width={400} height={300}>
<Pie data={data} dataKey="value" nameKey="name" cx="50%" cy="50%" outerRadius={80} fill="#8884d8">
{data.map((entry, index) => (
<Cell key={`cell-${index}`} fill={COLORS[index % COLORS.length]} />
))}
</Pie>
<Tooltip />
<Legend />
</PieChart>
);
4. Area Chart (면적 차트)
- 특징: 추세 + 면적으로 데이터 표현
- 주요 컴포넌트: `<AreaChart>`, `<Area>`, `<XAxis>`, `<YAxis>`, `<Tooltip>`
import { AreaChart, Area, XAxis, YAxis, Tooltip } from 'recharts';
const data = [
{ name: 'Week 1', uv: 400 },
{ name: 'Week 2', uv: 300 },
];
export const MyAreaChart = () => (
<AreaChart width={400} height={300} data={data}>
<XAxis dataKey="name" />
<YAxis />
<Tooltip />
<Area type="monotone" dataKey="uv" stroke="#ff7300" fill="#ff7300" />
</AreaChart>
);
5. Scatter Chart (산점도)
- 특징: 두 변수 간의 상관관계 표현
- 주요 컴포넌트: `<ScatterChart>`, `<Scatter>`, `<XAxis>`, `<YAxis>`, `<ZAxis>`, `<Tooltip>`
import { ScatterChart, Scatter, XAxis, YAxis, ZAxis, Tooltip } from 'recharts';
const data = [
{ x: 10, y: 20, z: 50 },
{ x: 30, y: 40, z: 100 },
];
export const MyScatterChart = () => (
<ScatterChart width={400} height={300}>
<XAxis dataKey="x" />
<YAxis dataKey="y" />
<ZAxis dataKey="z" />
<Tooltip />
<Scatter data={data} fill="#8884d8" />
</ScatterChart>
);
6. Radar Chart (레이더 차트)
- 특징: 여러 변수의 값 비교 (예: 성능 평가)
- 주요 컴포넌트: `<RadarChart>`, `<Radar>`, `<PolarGrid>`, `<PolarAngleAxis>`, `<PolarRadiusAxis>`
import { RadarChart, Radar, PolarGrid, PolarAngleAxis, PolarRadiusAxis } from 'recharts';
const data = [
{ subject: 'Math', A: 120, B: 100 },
{ subject: 'Science', A: 98, B: 130 },
];
export const MyRadarChart = () => (
<RadarChart cx={200} cy={200} outerRadius={150} width={400} height={400} data={data}>
<PolarGrid />
<PolarAngleAxis dataKey="subject" />
<PolarRadiusAxis />
<Radar name="A" dataKey="A" stroke="#8884d8" fill="#8884d8" fillOpacity={0.6} />
<Radar name="B" dataKey="B" stroke="#82ca9d" fill="#82ca9d" fillOpacity={0.6} />
</RadarChart>
);
7. Radial Bar Chart (원형 막대 차트)
- 특징: 원형 형태의 막대 차트 (진행률, 점수 등)
- 주요 컴포넌트: `<RadialBarChart>`, `<RadialBar>`, `<PolarAngleAxis>`, `<PolarRadiusAxis>`
import { RadialBarChart, RadialBar, PolarAngleAxis } from 'recharts';
const data = [{ name: 'Progress', value: 75 }];
export const MyRadialBarChart = () => (
<RadialBarChart width={300} height={300} innerRadius="20%" outerRadius="80%" data={data} startAngle={90} endAngle={-270}>
<PolarAngleAxis type="number" domain={[0, 100]} angleUnit={360} />
<RadialBar dataKey="value" fill="#8884d8" background />
</RadialBarChart>
);
8. Composed Chart (복합 차트)
- 특징: 여러 종류의 차트를 조합하여 표현
- 주요 컴포넌트: `<ComposedChart>`, `<Line>`, `<Bar>`, `<Area>`, `<XAxis>`, `<YAxis>`, `<Tooltip>`
import { ComposedChart, Line, Bar, Area, XAxis, YAxis, Tooltip } from 'recharts';
const data = [
{ name: 'Page A', uv: 50, pv: 80, amt: 100 },
{ name: 'Page B', uv: 150, pv: 90, amt: 120 },
];
export const MyComposedChart = () => (
<ComposedChart width={400} height={300} data={data}>
<XAxis dataKey="name" />
<YAxis />
<Tooltip />
<Bar dataKey="pv" barSize={20} fill="#413ea0" />
<Line type="monotone" dataKey="uv" stroke="#ff7300" />
<Area type="monotone" dataKey="amt" fill="#8884d8" stroke="#8884d8" />
</ComposedChart>
);
## 📌 기타 유용한 컴포넌트
| 컴포넌트 | 용도 |
|||
| `<CartesianGrid />` | 선형 차트의 격자선 |
| `<Legend />` | 범례 표시 |
| `<Tooltip />` | 마우스 오버 시 데이터 표시 |
| `<ResponsiveContainer />` | 반응형 크기 조절 (별도 설치 필요: `recharts-responsive-container`) |
| `<Brush />` | 범위 선택 (확대/축소) 기능 |
| `<ReferenceLine />` | 기준선 추가 |
| `<Label />` | 라벨 추가 |
## ✅ TypeScript 사용 시 주의점
- 모든 컴포넌트는 `React.FC`로 선언 가능
- 데이터는 `interface` 또는 `type`으로 타입 정의 권장
- `dataKey`는 반드시 `string` 타입으로 사용
- Recharts는 TypeScript 지원이 기본 포함되어 있음 (별도 타이핑 불필요)
interface ChartData {
name: string;
uv: number;
pv: number;
}
const MyLineChart: React.FC<{ data: ChartData[] }> = ({ data }) => (
<LineChart data={data}>...</LineChart>
);
## 🔗 참고 문서
- [Recharts 공식 문서](https://recharts.org/)
- [Recharts GitHub](https://github.com/recharts/recharts)
'테스트 플렛폼' 카테고리의 다른 글
소프트웨어 개발 전주기 상용 통합 서비스 (1) | 2025.08.06 |
---|---|
테스트 관련 오픈소스 & 상용 서비스 정리 (2) | 2025.08.06 |
Java에서 현재 시간을 "YYYY-MM-DD HH24:MI:SS" 형식으로 포맷하여 문자열 변수 toTime에 넣는 방법 (1) | 2025.06.11 |
Visure 기능 정의 (6) | 2025.06.02 |
ALM 테스트 관리 자동화 플랫폼의 기능 정의 및 상세 설계 (1) | 2025.06.02 |