amcharts 로 차트를 생성하는 코드이다.
amcharts 중 버전 5 사용

amcharts 를 install 하고 import 해준다.
import * as am5 from "@amcharts/amcharts5"; import * as am5percent from "@amcharts/amcharts5/percent"; import am5themes_Animated from "@amcharts/amcharts5/themes/Animated";
데이터 구조
let data = { {category : '기억' , value : 1 } , {category : '니은' , value : 1 } , {category : '디귿' , value : 1 } , .... .... {category : '히읏' , value : 1 } , }
Script Code
useEffect(() => { if(data){ // Create root const root = am5.Root.new(chartID); // Set themes root.setThemes([am5themes_Animated.new(root)]); // Create chart const chart = root.container.children.push( am5percent.PieChart.new(root, { endAngle: 270, // layout: root.verticalLayout }) ); // Create series const series = chart.series.push( am5percent.PieSeries.new(root, { name: "답변" , categoryField: "category", valueField: "value", endAngle: 270 , tooltip: am5.Tooltip.new(root, { labelText: '{category} {value} ({valuePercentTotal.formatNumber("0.00")}%)', // autoTextColor: false, }), legendLabelText: "[{}]{category}[/]", legendValueText: "[bold {fill}]{value}[/][{}]건[/]", }) ); // 1보다 작은 퍼센트 라벨 숨기기 series.labels.template.adapters.add("y", function(y, target) { let dataItem = target.dataItem; if (dataItem) { var tick = dataItem.get("tick"); if (tick) { if (dataItem.get("valuePercentTotal") < 1) { target.set("forceHidden", true); tick.set("forceHidden", true); } else { target.set("forceHidden", false); tick.set("forceHidden", false); } } return y; } }); series.states.create("hidden", { endAngle: -90 }); // Set data series.data.setAll(data); // series.labels.template.set("forceHidden", true); // series.ticks.template.set("forceHidden", true); // Add legend const legend = chart.children.push( am5.Legend.new(root, { y: am5.percent(50), centerY: am5.percent(100), layout: root.verticalLayout //세로 } )); legend.markerRectangles.template.setAll({ cornerRadiusTL: 10, cornerRadiusTR: 10, cornerRadiusBL: 10, cornerRadiusBR: 10 }); legend.data.setAll(series.dataItems); series.appear(1000, 100); } }, [data]);
퍼센트로 자동 변환되며
0이하의 데이터들은 pie 차트에서 출력되지않게 옵션 설정해주었다.
HTML 코드
<div id={chartID} className='watermark' style={{width : '100%' , height : '300px'}}> </div>
728x90
반응형
'Front-end > React' 카테고리의 다른 글
[대시보드] amcharts 라이브러리 사용 리액트 누적 막대 그래프 만들기 (0) | 2023.10.17 |
---|---|
React PC/Mobile 접속 기기별 라우팅 react-device-detect (0) | 2023.09.20 |
[대시보드] amcharts 라이브러리 사용 리액트 Bar 차트 (0) | 2023.08.27 |
ReactQuill 리액트 글쓰기 에디터 이미지 드롭하여 삽입하기 (2) | 2023.08.14 |
react-quill 리액트 글쓰기 에디터 이미지 서버에 저장후 url 연결 하기 [base64 문제 해결 too large data] (0) | 2023.08.11 |
댓글