R 그래프 - 부채꼴 모양 도넛차트 만들기

도넛차트인데, 각 영역의 길이는 동일하지만 높이를 다르게 표현한 그래프를 그려보고자 한다. 그려놓고 보니 약간 부채꼴 모양이긴해서 제목을 부채꼴 그래프라고 지어봤다. 일반적인 도넛차트를 그리는 방식과 거의 동일한데, 조금 방식이 다르다. 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))

마무리로, 색상, 폰트 등을 정리하면 끝이다. 일반적인 그래프 형태는 아니어서 잘 쓰이진 않을 수 있겠으나, 대부분 편차가 큰 데이터인 경우 다이나믹한 차이를 느끼게 해줄 때 간혹 그려볼만한 구조인듯 하다.


더 보면 좋을 글들