본문 바로가기
Front-end/React

[Chart JS] 도넛 그래프 굵기 변경 _ "react-chartjs-2"

by 꼬바리 2022. 4. 22.

chart js 로 도넛 그래프 생성하는 예제입니다.

 

주목하실점은

저의 경우

import { Doughnut } from 'react-chartjs-2';

를 임포트 하였습니다.

 

구글링과 정식 페이지에선

도넛의 굵기 조절을 option에서 cutoutPercentage / percentageInnerCutout 를 사용해서 조절하지만 문제는 안먹혔습니다.

 

찾고 찾고 또 같아서 option이 아닌 data에 설정 해주는걸 찾았습니다

<div className="chart doughnut">
<Doughnut
data={data}
options={options}
plugins={data.plugins}
/>
</div>

 

const data = {
plugins: [ChartDataLabels], // 라인 이나 막대에 data 값 출력
labels:labelData,
datasets: [
{
label: 'pieData',
data: pieData,
backgroundColor :objColor ,
hoverBackgroundColor:hoverBackgroundColor,
hoverBorderColor: "rgba(234, 236, 244, 1)",
cutout: "60%", // 도넛 안쪽 원의 크기 설정
}
]
};

*데이터셋 에 cutout  설정 *

 

const options = {
// cutoutPercentage: 10, //도넛 굵기 값이 클수록 얇아짐 안먹히는 이유좀ㅋ ? cutoutPercentage / percentageInnerCutout
maintainAspectRatio: false, //fasle : 상위 div에 구속
plugins: {
legend: {
position: 'bottom',
},
title: {
display: false,
text: titleText
},
datalabels: {
display: true,
formatter: (value,ctx) => {
let total = 0
for(let i = 0 ;i<5; i++ ){
total += ctx.dataset.data[i]
}
let result = (value / total ) *100
if(value == 0){
return '';
}else{
return result.toFixed(1) + '%';
}
},
color: '#fff',
// backgroundColor: '#404040'
weight: 'bold',
textShadowBlur: 10,
textShadowColor : 'black',
},
doughnutlabel: {
labels: [{
text: '0',
font: {
size: 20,
weight: 'bold'
}
}, {
text: 'total'
}]
}
},
onClick: function(evt, element) {
console.log(evt, element);
console.log("click 도넛 index : ", element[0].index);
console.log(labelData[element[0].index]);
onDoughnut(element[0].index)
}
};

옵션 설정엔 퍼센트 출력과, 온클릭 이벤트 코드 들어가 있습니다.

728x90
반응형

댓글