티스토리 뷰
react-chartjs-2로 Bar 차트 만들기
chartjs-plugin-datalabels 플러그인 적용은 6.부터
1. 라이브러리 설치
# 리액트차트js2, 차트.js, datalabels 플러그인
npm install react-chartjs-2 chart.js chartjs-plugin-datalabels
2. 기본 틀 만들기
// Bar.js 파일
import {
Chart as ChartJS,
CategoryScale,
BarElement,
LinearScale,
} from 'chart.js';
ChartJS.register(CategoryScale, BarElement, LinearScale);
3. 옵션 설정
// Bar.js
const options = {
maintainAspectRatio: false, // 비율 유지
responsive: true, // 반응형
scales: {
x: {
border: {
display: false, // x축 지우기
},
grid: {
display: false, // 세로 눈금선 지우기
},
ticks: { // x축 항목 스타일
font: {
size: 16, // px 단위
weight: 'bold',
family: 'Pretendard-medium',
},
},
},
y: {
max: 70, // 최댓값 지정
ticks: {
display: false, // y축 항목 가리기
},
},
},
};
4. 데이터 설정
// Bar.js
const data = {
labels: ['감자', '고구마', '바나나', '토마토'], // x축 항목
datasets: [
{
data: [10, 45, 35, 30], // 항목값
},
],
};
5. (데이터레이블 적용 전) 4.까지 화면에 그리기
// Bar.js
import { Bar } from 'react-chartjs-2';
const BarChart = () => {
return (
<div>
<Bar options={options} data={data} />
</div>
)
}
export default BarChart;
6. 데이터레이블 플러그인 옵션 추가
// Bar.js
import ChartDataLabels from 'chartjs-plugin-datalabels';
// options 객체에 추가
const options = {
// ... 3.에서 작성한 내용
plugins: {
datalabels: {
align: 'end',
anchor: 'end',
font: {
size: 24,
weight: 'bold',
},
formatter: function (value, context) {
// 데이터레이블 값 변경 함수
return value;
},
},
},
};
7. Bar Element에 플러그인 추가
// Bar.js
import ChartDataLabels from 'chartjs-plugin-datalabels';
const BarChart = () => {
return (
<Bar options={options} data={data} plugins={[ChartDataLabels]} />
)
}
export default BarChart;
전체 코드
// Bar.js
import {
Chart as ChartJS,
CategoryScale,
LinearScale,
BarElement,
} from 'chart.js';
import { Bar } from 'react-chartjs-2';
import ChartDataLabels from 'chartjs-plugin-datalabels';
ChartJS.register(CategoryScale, BarElement, LinearScale);
const options = {
maintainAspectRatio: false, // 비율 유지
responsive: true, // 반응형
scales: {
x: {
border: {
display: false, // x축 지우기
},
grid: {
display: false, // 세로 눈금선 지우기
},
ticks: { // x축 항목 스타일
font: {
size: 16, // px 단위
weight: 'bold',
family: 'Pretendard-medium',
},
},
},
y: {
max: 70, // 최댓값 지정
ticks: {
display: false, // y축 항목 가리기
},
},
},
plugins: {
datalabels: {
align: 'end',
anchor: 'end',
font: {
size: 24,
weight: 'bold',
},
formatter: function (value, context) {
// 데이터레이블 값 변경 함수
return value;
},
},
}
};
const data = {
labels: ['감자', '고구마', '바나나', '토마토'], // x축 항목
datasets: [
{
data: [10, 45, 35, 30], // 항목값
},
],
};
const BarChart = () => {
return (
<div>
<Bar options={options} data={data} plugins={[ChartDataLabels]} />
</div>
)
}
export default BarChart;
2023.06.13
'Javascript' 카테고리의 다른 글
[React] Context API (0) | 2023.07.03 |
---|---|
[React] rc-rate 라이브러리(별점 컴포넌트) (0) | 2023.06.17 |
[React] 상태가 저장되는 위치: 브라우저의 메모리 (0) | 2023.06.11 |
[JS] The New JavaScript Features Coming in ECMAScript 2023 (0) | 2023.06.09 |
[React] Recoil (0) | 2023.04.21 |
댓글
공지사항