티스토리 뷰
ggplot2 로 아래와 같이 막대그래프를 그려본다. 막대그래프를 하나만 그리는게 아니라 막대뒤에 어두운 색으로 하나 더 그려줬다. y축을 표시하지 않는 대신, 어느정도 최대치 높이까지 채워졌는지 느낌을 준 정도이다.
데이터를 먼저 만들어놓는다. x축 10개의 값을 만들고, 높이y를 랜덤하게 sample 함수를 이용해서 10~60사이로 정한다. 마지막으로 막대그래프가 다 같은 색이면 단조로울거 같아서 z필드에 a, b 2개의 유형을 정의했다.
tb1 = tibble(x = 1:10, y = sample(10:60, 10), z = rep(letters[1:2], 5))
tb1
# A tibble: 10 × 3
x y z
<int> <int> <chr>
1 1 32 a
2 2 44 b
3 3 24 a
4 4 57 b
5 5 16 a
6 6 25 b
7 7 20 a
8 8 47 b
9 9 45 a
10 10 21 b
x, y 축을 정의하고, fill 에다가 z 를 할당하면 아래와 같이 2개의 색깔이 번갈아가면서 만들어진다.
ggplot(tb1, aes(x,y)) +
geom_col(aes(fill = z), width = 0.7)
막대그래프에 z 필드를 가지고 색상을 채웠는데, 색상이 디폴트다보니 맘에 들지 않는다. fill 에 할당된 색을 재정의 할 수 있는데, 손수 하나씩 할당하는 scale_fill_manual 함수를 사용하면 된다. 보라색 계열 2개를 색상을 골라서 셋팅해봤다. 추가로 theme_bw 로 테마를 셋팅해봤는데, 잘 모르면 빼도 된다.
ggplot(tb1, aes(x,y,fill = z)) +
geom_col(width = 0.7) +
scale_fill_manual(values = c("#9F9EBF", "#7070A2")) +
theme_bw()
막대그래프 상단에 텍스트를 추가해본다. geom_text 함수를 이용하면 되고, y 축 값을 label 에 셋팅하면 끝. family 에 맘에 드는 폰트를 지정하면 조금 더 디자인이 살아난다.
ggplot(tb1, aes(x,y,fill = z)) +
geom_col(width = 0.7) +
geom_text(aes(label = y),
colour = "gray100", vjust = 2,
family = "BMJUAOTF", size = 5) +
scale_fill_manual(values = c("#9F9EBF", "#7070A2")) +
theme_bw()
마지막으로 배경색을 입히고 원래 만들었던 막대그래프 뒤에 배경색보다 조금 더 어두운 색을 지정하기 위해서 geom_col 을 하나 더 추가한다. 그리고 x축에 숫자가 아닌 A~J 까지의 텍스트로 정의해준다.(scale_x_continuous) ~끝.
v_background_color = "#334960"
v_font_color = "gray100"
tibble(x = 1:10, y = sample(10:60, 10), z = rep(letters[1:2], 5)) %>%
ggplot(aes(x,y)) +
geom_col(aes(x = 1:10, y = 60), fill = "#2D4054", width = 0.7) +
geom_col(aes(fill = z), width = 0.7) +
geom_text(aes(label = paste0("$",y)), vjust = 2, colour = v_font_color,
family = "BMJUAOTF", size = 5) +
scale_fill_manual(values = c("#9F9EBF", "#7070A2")) +
scale_x_continuous(breaks = 1:10, labels = LETTERS[1:10]) +
theme_void(base_family = "BMJUAOTF") +
theme(legend.position = "none",
axis.text.x = element_text(colour = v_font_color, size = 15),
plot.background = element_rect(fill = v_background_color))
- Total
- Today
- Yesterday
- 셀프개통
- javascript
- ggplot
- ktm모바일
- Google Chart Tools
- python
- R
- MySQL
- ipTIME
- java
- Oracle
- heroku
- docker
- 맥북
- SVN
- MongoDB
- MyBatis
- Spring
- eclipse
- 마인크래프트
- vagrant
- 자급제폰
- 알뜰요금제
- ggplot2
- 막대그래프
- github
- 도넛차트
- ubuntu
- 이클립스
- 아이맥
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |