티스토리 뷰
반응형
도넛차트를 그리기는 여럿 그려보긴했는데, 아래 처럼 일부 조각을 띄우는 방식은 만들고 싶었다. 이게 ggplot2 라이브러리의 옵션으로 제공되지 않기 때문에, 다른 방법을 강구해야만 했다. 알아낸 방법은 geom_tile 함수를 이용해서 살짝 위치이동을 하면, 조각 하나가 별도로 떨어져나와서 강조가 되는 그런 도넛차트를 만들 수 있다.
기본 도넛차트를 그리는 법은 아래 링크들을 참고한다.
우선 geom_tile 로 직사각형을 만들고 그걸 이용해 특정 조각이 띄워지는 효과를 내볼까한다 그러기위해서는 데이터를 만드는 과정이 추가적으로 필요하다. w값은 width 로 각 직사각형의 가로 길이이고, h는 각 직사각형의 높이, y 는 각 직사각형의 나머지는 x 값을 구하기 위한 과정이다.
tibble(w = c(2,4,1,2,1), # 직사각형의 가로 길이
h = rep(1,5), # 각 직사각형의 높이는 1로 기본셋팅.
y = c(1.4,1,1,1,1)) %>% # 조각들의 높이값, 띄울게 있으면 1보다 크게 설정.
mutate(w1 = cumsum(w)) %>%
mutate(w2 = lag(w1, 1, default = 0)) %>%
mutate(x = w / 2 + w2)
# A tibble: 5 × 6
w h y w1 w2 x
<dbl> <dbl> <dbl> <dbl> <dbl> <dbl>
1 2 1 1.4 2 0 1
2 4 1 1 6 2 4
3 1 1 1 7 6 6.5
4 2 1 1 9 7 8
5 1 1 1 10 9 9.5
geom_tile 은 사실상 직사각형이 위치할 중앙좌표(x,y)를 주고, width 와 height 를 줘야 하기 때문에, 사전에 어느정도 계산이 되어야 한다. 어쨋든 값을 잘 셋팅하면, 아래와 같이 그려진다. 근데 빨간색 직사각형은 살짝 위에 그렸는데, 이게 나중에 도넛차트의 일부 조각이 띄워져 보이는 효과를 만들어 낸다.
ggplot(tb1, aes(x, y, width = w,
height = h,
fill = factor(x))) +
geom_tile() +
coord_fixed()
반응형
이제 coord_polar 함수로 원형으로 만들어보자. 빨간색 조각만 살짝 들떠있는게 보인다.
ggplot(tb1, aes(x, y, width = w,
height = h,
fill = factor(x))) +
geom_tile() +
coord_polar() +
theme_bw() +
theme(legend.position = "none",
axis.title.x = element_blank())
가운데가 비어있지 않기 때문에, ylim 으로 살짝 공간을 넣어주고, colour 를 흰색으로 셋팅하면 끝.
ggplot(tb1, aes(x, y, width = w,
height = h,
fill = factor(x))) +
geom_tile() +
coord_polar() +
ylim(c(-3,2)) +
theme_bw() +
theme(legend.position = "none",
axis.title.x = element_blank())
반응형
공지사항
최근에 올라온 글
최근에 달린 댓글
- Total
- Today
- Yesterday
링크
TAG
- MyBatis
- github
- MongoDB
- 아이맥
- heroku
- Oracle
- 자급제폰
- R
- 마인크래프트
- 막대그래프
- eclipse
- ggplot2
- Spring
- vagrant
- python
- 맥북
- ubuntu
- ktm모바일
- ggplot
- 도넛차트
- 셀프개통
- javascript
- Google Chart Tools
- 이클립스
- MySQL
- docker
- java
- ipTIME
- 알뜰요금제
- SVN
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | |||
5 | 6 | 7 | 8 | 9 | 10 | 11 |
12 | 13 | 14 | 15 | 16 | 17 | 18 |
19 | 20 | 21 | 22 | 23 | 24 | 25 |
26 | 27 | 28 | 29 | 30 | 31 |
글 보관함