[javascript] D3.js를 이용한 도넛 차트 그리기

D3.js는 데이터 시각화를 위한 자바스크립트 라이브러리로, 다양한 형식의 차트를 생성하는 데 사용됩니다. 이번에는 D3.js를 이용하여 도넛 차트를 그려보겠습니다.

필요한 라이브러리 가져오기

우선 D3.js를 사용하기 위해 해당 라이브러리를 가져와야 합니다. HTML 파일의 <head> 태그 내에 다음 코드를 추가하여 D3.js를 불러옵니다.

<script src="https://d3js.org/d3.v6.min.js" charset="utf-8"></script>

데이터 준비하기

도넛 차트를 그리기 위해 필요한 데이터를 준비합니다. 예를 들어, 다음과 같은 데이터가 있다고 가정해보겠습니다.

var data = [
  { label: "사과", value: 30 },
  { label: "바나나", value: 50 },
  { label: "딸기", value: 70 },
  { label: "포도", value: 40 },
  { label: "수박", value: 60 }
];

도넛 차트 그리기

이제 D3.js를 이용하여 도넛 차트를 그려봅시다. 아래의 코드를 참고하여 도넛 차트를 그릴 수 있습니다.

// 차트 크기 설정하기
var width = 400;
var height = 400;
var radius = Math.min(width, height) / 2;

// SVG 요소 생성하기
var svg = d3.select("body")
  .append("svg")
  .attr("width", width)
  .attr("height", height)
  .append("g")
  .attr("transform", "translate(" + width / 2 + "," + height / 2 + ")");

// 색상 설정하기
var colors = d3.scaleOrdinal(d3.schemeCategory10);

// 도넛 차트 그리기
var arc = d3.arc()
  .innerRadius(radius * 0.6)
  .outerRadius(radius);

var pie = d3.pie()
  .value(function(d) { return d.value; })
  .sort(null);

var path = svg.selectAll("path")
  .data(pie(data))
  .enter()
  .append("path")
  .attr("d", arc)
  .attr("fill", function(d, i) { return colors(i); });

// 레이블 추가하기
var label = svg.selectAll("text")
  .data(pie(data))
  .enter()
  .append("text")
  .attr("transform", function(d) { return "translate(" + arc.centroid(d) + ")"; })
  .attr("dy", ".35em")
  .text(function(d) { return d.data.label; })
  .attr("text-anchor", "middle");

위의 코드를 실행하면 도넛 차트가 생성되어 페이지에 표시됩니다.

결론

D3.js를 이용하여 도넛 차트를 그리는 방법에 대해 알아보았습니다. D3.js는 다양한 형식의 차트를 생성할 수 있는 강력한 도구이며, 이를 통해 데이터 시각화를 더욱 쉽고 효과적으로 할 수 있습니다.

참고 자료