도넛차트인데, 각 영역의 길이는 동일하지만 높이를 다르게 표현한 그래프를 그려보고자 한다. 그려놓고 보니 약간 부채꼴 모양이긴해서 제목을 부채꼴 그래프라고 지어봤다. 일반적인 도넛차트를 그리는 방식과 거의 동일한데, 조금 방식이 다르다. geom_col
을 하나의 x좌표값에다가 쌓아놓고 y 축을 기준으로 coord_polar
함수를 사용하는게 아니라, 막대그래프를 쌓지않고 일반적으로 나누어 그리고, x축을 기준으로 coord_polar
를 사용할 예정이다. 완성된 그림은 아래와 같다.
그래프 데이터 만들기
일반적인 막대그래프를 그리기위해 데이터를 만든다. 각 x값에 바인딩될 y 값을 쌍으로 맞춰 작성만 했다. 눈여겨볼점은 높은값부터 적었다는 것이니 참고바란다.
tb1 = tibble(x = 1:10,
y = c(115, 110, 88, 75, 63,
43, 35, 28, 25, 20))
# A tibble: 10 × 2
x y
<int> <dbl>
1 1 115
2 2 110
3 3 88
4 4 75
5 5 63
6 6 43
7 7 35
8 8 28
9 9 25
10 10 20
그래프 만들기
우선 막대그래프 먼저 그린다. 중요한건 width = 1
로 막대그래프간에 틈을 없애고, 그 다음에 size = 1, colour = "white"
로 흰색 테두리를 만들어 준다.
ggplot(tb1, aes(x, y, fill = factor(1))) +
geom_col(width = 1, size = 1, colour = "white")
coord_polar
함수를 사용해서 그래프를 원형으로 만들어준다. 파라메터를 넣지 않으면, x축을 기준으로 원형을 만든다.
ggplot(tb1, aes(x, y, fill = factor(1))) +
geom_col(width = 1, size = 1, colour = "white") +
coord_polar()
안에다 약간의 공간을 넣어줄건데, ylim
으로 빈공간을 만들어준다. 이게 기본틀은 완성이다.
ggplot(tb1, aes(x, y, fill = factor(1))) +
geom_col(width = 1, size = 1, colour = "white") +
coord_polar() +
ylim(c(-50, 120))
마무리로, 색상, 폰트 등을 정리하면 끝이다. 일반적인 그래프 형태는 아니어서 잘 쓰이진 않을 수 있겠으나, 대부분 편차가 큰 데이터인 경우 다이나믹한 차이를 느끼게 해줄 때 간혹 그려볼만한 구조인듯 하다.