[javascript] D3.js를 이용한 권력 구조 시각화
D3.js는 데이터 시각화를 위한 인기 있는 자바스크립트 라이브러리입니다. 이 글에서는 D3.js를 사용하여 권력 구조를 시각화하는 방법에 대해 알아보겠습니다.
D3.js란?
D3.js는 데이터 주도 문서(D3 - Data-Driven Documents)를 생성하기 위한 자바스크립트 라이브러리입니다. D3.js는 SVG, HTML, CSS 등을 사용하여 동적이고 인터랙티브한 데이터 시각화를 구현할 수 있습니다.
데이터 준비
권력 구조 시각화를 위해 먼저 데이터를 준비해야 합니다. 이 예시에서는 JSON 형태의 데이터를 사용하겠습니다. 데이터에는 권력 구조에 대한 정보가 포함되어야 합니다. 예를 들어, 조직의 계층 구조, 관계, 인원 수 등이 포함될 수 있습니다.
const data = [
{ name: "CEO", parent: null },
{ name: "CTO", parent: "CEO" },
{ name: "CFO", parent: "CEO" },
{ name: "Engineer 1", parent: "CTO" },
{ name: "Engineer 2", parent: "CTO" },
{ name: "Accountant", parent: "CFO" },
];
시각화 구현
D3.js를 사용하여 데이터를 시각화하는 과정에는 여러 단계가 포함됩니다. 먼저 SVG 요소를 생성하고 위치를 설정합니다. 그런 다음 데이터를 바탕으로 원하는 모양의 그래프를 그립니다.
// SVG 요소 생성
const svg = d3.select("body")
.append("svg")
.attr("width", width)
.attr("height", height);
// 그래프 구현
const nodes = d3.stratify()
.id(function(d) { return d.name; })
.parentId(function(d) { return d.parent; })
(data)
.descendants();
const links = nodes.slice(1);
const node = svg.selectAll(".node")
.data(nodes)
.enter().append("g")
.attr("class", "node");
node.append("circle")
.attr("r", 5)
.style("fill", "#ff5722");
node.append("text")
.attr("dx", 12)
.attr("dy", 4)
.text(function(d) { return d.data.name; });
const link = svg.selectAll(".link")
.data(links)
.enter().append("path")
.attr("class", "link")
.attr("d", function(d) {
return "M" + d.y + "," + d.x
+ "C" + (d.y + d.parent.y) / 2 + "," + d.x
+ " " + (d.y + d.parent.y) / 2 + "," + d.parent.x
+ " " + d.parent.y + "," + d.parent.x;
});
위의 코드는 간단한 권력 구조를 시각화하기 위한 예시 코드입니다. 데이터를 바탕으로 노드와 링크를 생성하여 SVG 요소에 추가합니다.
결과 확인
위의 코드를 실행하면 권력 구조를 시각화한 결과를 확인할 수 있습니다. 생성된 그래프는 SVG 요소에 렌더링됩니다.
결론
D3.js는 강력한 데이터 시각화 도구로서 다양한 형태의 시각화를 구현할 수 있습니다. 이 글에서는 D3.js를 사용하여 권력 구조를 시각화하는 예시를 살펴보았습니다. D3.js를 활용하여 데이터 시각화에 도전해보세요!