본 포스팅에서는 react.js에서 d3를 다루는 법을 알아볼 예정입니다.
"아무도 열람하지 않은 시각화는 진정한 의미로는 시각적 산물이 아니다."
-Scott Murray
⚡️데이터를 불러오고, 엮어서, 문서요소를 변환, 전이시키기 위해 사용할 문법
🚨Notice
- D3는 오래된 브라우저들을 지원하지 않는다.(익스플로러 8이하 등)
- d3의 핵심 기능은 구글맵(Google maps)나 클라우드메이드(cloudmade)가 지원하는 형태의 비트맵 이미지 타일을 다루지 않는다.
- d3는 SVG이미지나 geoJSON 데이터 같은 벡터(vector)방식에 최적화되어있다.
🚨d3의 핵심 컨셉 중 하나는 DOM 요소에 data를 binding 하는 것 이다.
function Circles(){
const [dataset, setDataset] = useState(
generateDataset()
)
const ref = useRef()
useEffect(() => {
const svgElement = d3.select(ref.current)
svgElement.selectAll("circle")
.data(dataset)
.join("circle")
.attr("cx", d => d[0])
.attr("cy", d => d[1])
.attr("r", 3)
}, [dataset])
useInterval(() => {
const newDataset = generateDataset()
setDataset(newDataset)
}, 2000)
return (
<svg
viewBox="0 0 100 50"
ref={ref}
/>
)
}