티스토리 뷰
반응형
수평 막대그래프를 그리는 방법중의 하나를 정리해본다. 아래 왼편그림처럼 수직차트를 그려놓고, x/y 축을 뒤집어 바꾸어 오른쪽 그림처럼 변경이 가능하다. 그 기능을 제공하는 ggplot2::coord_flip 함수를 사용하면 된다.
테스트를 진행할 임시 데이터를 하나 만든다. 연도별 통계를 임의로 만들어본다. x축은 년도이고, y축은 50~150 사이의 숫자를 랜덤하게 만들어본다.
library(tidyverse)
tb = tibble(x = 2017:2022, y = sample(50:150, 6)) %>%
mutate(z = max(y) == y)
# A tibble: 6 × 3
x y z
<int> <int> <lgl>
1 2017 97 FALSE
2 2018 101 FALSE
3 2019 146 TRUE
4 2020 110 FALSE
5 2021 67 FALSE
6 2022 88 FALSE
처음 할 일은 평범하게 수직그래프를 그리는 일이다. x축이 듬성듬성나오는건, 나중에 scale_x_continuous 를 이용해서 다 나오게 할 예정이다.
ggplot(tb, aes(x, y)) +
geom_col(width = 0.6)
반응형
중요한 순간이다. coord_flip 를 호출하면, x축과 y축을 뒤바꾸게 되면서 수평막대차트가 만들어진다.
ggplot(tb, aes(x, y)) +
geom_col(width = 0.6) +
coord_flip()
디자인/여백/폰트 등을 정의하고, 최종 마무리를 진행한 결과이다.
ggplot(tb, aes(x, y, fill = z)) +
geom_col(width = 0.6) +
geom_text(aes(x = x, y = y, label = y), hjust = -0.5, family = "BMJUAOTF") +
scale_x_continuous(breaks = tb$x) +
scale_y_continuous(limits = c(0, max(tb$y) * 1.1)) +
coord_flip() +
theme_void(base_family = "BMDoHyeon-OTF") +
theme(
axis.text.y = element_text(),
plot.margin = unit(c(.3,1,.3,1), "cm"),
legend.position = "none"
) +
scale_fill_manual(values = c("#a6bddb", "#0570b0"))
반응형
공지사항
최근에 올라온 글
최근에 달린 댓글
- Total
- Today
- Yesterday
링크
TAG
- MyBatis
- ubuntu
- MySQL
- Spring
- javascript
- ipTIME
- MongoDB
- 맥북
- 도넛차트
- ggplot2
- 아이맥
- python
- ggplot
- docker
- vagrant
- 이클립스
- ktm모바일
- 마인크래프트
- R
- 셀프개통
- Google Chart Tools
- heroku
- java
- 막대그래프
- 자급제폰
- Oracle
- SVN
- 알뜰요금제
- github
- eclipse
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |
글 보관함