원그래프를 그릴때, 특정 수치를 강조하는 방법은 살짝 간격를 두고 띄우는 것이다. 추가로 폰트의 크기를 살짝 키워주면 눈에도 잘 띄게 된다. 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()
배경색을 좀 같이 맞춰주면 원그래프의 일부조각이 띄워져 있는 효과를 낼 수 있다.