이번 프로젝트에서 파이차트를 svg로 직접 만들어보려고 하였다.
유튜브와 학습 자료를 보며 정리한 내용을 글로 남기고자 한다.
1. 하나의 파이차트 그리기
<svg width="40" height="40" viewBox="0 0 40 40">
<circle
r="10"
cx="20"
cy="20"
fill="transparent"
stroke="tomato"
stroke-width="20"
stroke-dasharray="calc(40 * calc(2*3.14*10) / 100) calc(2*3.14*10)"
/>
</svg>
이렇게까지 하면, 파이차트가 90도에서 시작하게 된다.
위 쪽부터 시작하도록 파이 차트를 옮겨야 한다.
2. 위치 옮기기
css의 transform으로 위치를 변화시킬 수 있다. 우선
rotate로 원을 돌리고, x축으로 지름의 길이 * 2를 내려오게 해야 한다.
x축 방향으로 옮기는 이유는 90도를 돌렸기 때문에 수직 방향은 x축이기 때문이다.
<circle
r="10"
cx="20"
cy="20"
fill="transparent"
stroke="tomato"
stroke-width="20"
stroke-dasharray="calc(40 * calc(2*3.14*10) / 100) calc(2*3.14*10)"
transform="rotate(-90) translate(-40)"
/>
3. 비율 정하기
stroke-dasharray="calc(n * 원주 / 100) 원주"
stroke-dasharray에서 n의 값을 변경시키면서 비율을 정할 수 있다.
모든 비율을 정하고 나면 다음과 같이 파이차트가 그려진다.
<svg width="40" height="40" viewBox="0 0 40 40">
<circle
r="10"
cx="20"
cy="20"
fill="transparent"
stroke="tomato"
stroke-width="20"
stroke-dasharray="calc(100 * calc(2*3.14*10) / 100) calc(2*3.14*10)"
transform="rotate(-90) translate(-40)"
/>
<circle
r="10"
cx="20"
cy="20"
fill="transparent"
stroke="pink"
stroke-width="20"
stroke-dasharray="calc(80 * calc(2*3.14*10) / 100) calc(2*3.14*10)"
transform="rotate(-90) translate(-40)"
/>
<circle
r="10"
cx="20"
cy="20"
fill="transparent"
stroke="yellow"
stroke-width="20"
stroke-dasharray="calc(50 * calc(2*3.14*10) / 100) calc(2*3.14*10)"
transform="rotate(-90) translate(-40)"
/>
</svg>
<svg width="40" height="40" viewBox="0 0 40 40">
<g
fill="transparent"
strokeWidth="20"
transform="rotate(-90) translate(-40)"
>
<circle
r="10"
cx="20"
cy="20"
stroke="tomato"
strokeDasharray="calc(100 * calc(2*3.14*10) / 100) calc(2*3.14*10)"
/>
<circle
r="10"
cx="20"
cy="20"
stroke="pink"
strokeDasharray="calc(80 * calc(2*3.14*10) / 100) calc(2*3.14*10)"
/>
<circle
r="10"
cx="20"
cy="20"
stroke="yellow"
strokeDasharray="calc(50 * calc(2*3.14*10) / 100) calc(2*3.14*10)"
/>
</g>
</svg>