R 그래프 - 원그래프 조각 띄우기

원그래프를 그릴때, 특정 수치를 강조하는 방법은 살짝 간격를 두고 띄우는 것이다. 추가로 폰트의 크기를 살짝 키워주면 눈에도 잘 띄게 된다. ggplot2 패키지에서 특정 함수나 파라메터로 제공되는 기능은 아니고, 특정 조각에만 테두리를 입혀서 살짝 띄워져 보이도록 하는 꼼수를 부려볼까 한다.

데이터 만들기

geom_rect 함수를 이용해서 원그래프를 그릴 예정이다. 여러개의 조각이 생길텐데, 그중에 강조할(띄울) 조각에는 y2 값에 0이 아닌 값을 셋팅한다.

tb1 = tibble(w = c(3,4,5,2,1)) %>% 
  mutate(x2 = cumsum(w)) %>% 
  mutate(x1 = lag(x2, 1, default = 0), .before = x2) %>% 
  mutate(y1 = 0) %>% 
  mutate(y2 = c(1,0,0,0,0) + 5)

# A tibble: 5 × 5
      w    x1    x2    y1    y2
  <dbl> <dbl> <dbl> <dbl> <dbl>
1     3     0     3     0     6
2     4     3     7     0     5
3     5     7    12     0     5
4     2    12    14     0     5
5     1    14    15     0     5

그래프 그리기

만든 데이터를 가지고 geom_rect 그래프를 그린다. 살짝 높은 직사각형이 나중에 원그래프에서 띄워지게 될 조각부분이 된다.

ggplot(tb3, aes(xmin = x1, 
                xmax = x2, 
                ymin = y1, 
                ymax = y2, 
                fill = factor(w))) +
  geom_rect() +
  coord_fixed()

coord_polar 함수를 사용하면 원그래프로 바뀐다. 이게 기본틀이 되는 것이고, 저 초록색 조각을 띄우기만 하면된다.

ggplot(tb3, aes(xmin = x1, 
                xmax = x2, 
                ymin = y1, 
                ymax = y2, 
                fill = factor(w))) +
  geom_rect() +
  coord_polar() +
  theme_bw()

조각을 띄우는 방법은 그냥 테두리를 두껍게 하얀색으로 칠해버리는 것이다. 모든 조각에 적용해서는 안되고 특정 조각에만 두께를 설정해야 한다. 보면 알겠지만 하얀색으로 특정조각에만 테두리가 생긴걸 볼 수 있다.

ggplot(tb3, aes(xmin = x1, 
                xmax = x2, 
                ymin = y1, 
                ymax = y2, 
                fill = factor(w))) +
  geom_rect(size = c(9,NA,NA,NA,NA), colour = "white") +
  coord_polar()

plot 배경을 하얀색으로 바뀌니 아까 보이던 테두리가 보이지 않게 된다. 이 꼼수의 전략은 테두리색과 배경색을 똑같이 셋팅해야 한다.

ggplot(tb3, aes(xmin = x1, 
                xmax = x2, 
                ymin = y1, 
                ymax = y2, 
                fill = factor(w))) +
  geom_rect(size = c(9,NA,NA,NA,NA), colour = "white") +
  coord_polar()

배경색을 좀 같이 맞춰주면 원그래프의 일부조각이 띄워져 있는 효과를 낼 수 있다.


더 보면 좋을 글들