티스토리 뷰
반응형
ggplot 으로 그래프를 그리다보면, x 축에 너무 많은 값들이 표기가되서 너무 빽빽하게 보이는 현상이 있다. 이건 아마도 문자열값(character)이다보니 발생하는 문제인데, 일부 대표값 혹은 본인이 원하는 특정값만 가지고 x축을 표현할 수 있다. 아래 그림을 보면, x 축의 값들이 너무 빽빽하다보니 중첩되서 알아볼 수 없게 된다.
t1 = tibble(연도 = paste0(as.character(2015:2026), '-01-01'),
인구수 = c(1014, 1245, 1446, 1635, 1811, 1973,
2123, 2261, 2388, 2504, 2609, 2704))
t1
# A tibble: 12 × 2
# 연도 인구수
# <chr> <dbl>
# 1 2015-01-01 1014
# 2 2016-01-01 1245
# 3 2017-01-01 1446
# 4 2018-01-01 1635
# 5 2019-01-01 1811
ggplot(t1, aes(x = 연도, y = 인구수, group = 1)) +
geom_line()
이렇게 되는 원인은 사실 연도(x)로 지정된 값이 chr 값이기 때문이다.(그리고 aes 설정할때도 group=1 도 추가로 설정이 필요한 이유이다) 만약 숫자형이나 날짜형이었으면 이렇게 다 표현하지 않고 일부만 표현되게 되어있다. 그 예시는 이 포스팅 하단에 다시 언급하겠다.
해결책은, scale_x_discrete 함수를 이용해서 일부 본인이 원하는 값만 x 축에 표시하도록 한다.
ggplot(t1, aes(x = 연도, y = 인구수, group = 1)) +
geom_line() +
scale_x_discrete(breaks = c('2015-01-01', '2021-01-01', '2026-01-01'))
자 이번엔 연도를 그냥 숫자 4자리로 셋팅해보자. x축을 보니 좀 이상하다. 2020.0 , 2022.5 이런 제멋대로의 값이 나온다.
t2 = tibble(연도 = 2015:2026,
인구수 = c(1014, 1245, 1446, 1635, 1811, 1973,
2123, 2261, 2388, 2504, 2609, 2704))
t2 %>% head
# A tibble: 6 × 2
# 연도 인구수
# <int> <dbl>
# 1 2015 1014
# 2 2016 1245
# 3 2017 1446
# 4 2018 1635
# 5 2019 1811
# 6 2020 1973
ggplot(t2, aes(x = 연도, y = 인구수)) +
geom_line()
반응형
다시 정수로 원하는 구간으로 2년마다 하나씩 보여주고 싶으면 아래처럼 셋팅한다. 숫자형이다보니 아까 셋팅했던 group=1 의 설정을 삭제해도 된다.
ggplot(t2, aes(x = 연도, y = 인구수)) +
geom_line() +
scale_x_continuous(breaks = seq(2015, 2026, 2))
마지막으로, date형으로 x축을 셋팅할 때는 ggplot 이 좀 다 알아서 하는 느낌이다. 매해 1월1일로 셋팅했는데 x 축은 연도만 나온다.
t3 = tibble(연도 = as.Date(paste0(as.character(2015:2026), '-01-01')),
인구수 = c(1014, 1245, 1446, 1635, 1811, 1973,
2123, 2261, 2388, 2504, 2609, 2704))
t3 %>% head
# A tibble: 6 × 2
# 연도 인구수
# <date> <dbl>
# 1 2015-01-01 1014
# 2 2016-01-01 1245
# 3 2017-01-01 1446
# 4 2018-01-01 1635
# 5 2019-01-01 1811
# 6 2020-01-01 1973
ggplot(t3, aes(x = 연도, y = 인구수)) +
geom_line()
원하는 날짜만 x 축에 표시하고 싶을때는 아래처럼 하면 된다.
ggplot(t3, aes(x = 연도, y = 인구수)) +
geom_line() +
scale_x_continuous(breaks = as.Date(c('2015-01-01', '2022-01-01')))
반응형
공지사항
최근에 올라온 글
최근에 달린 댓글
- Total
- Today
- Yesterday
링크
TAG
- MySQL
- MongoDB
- ktm모바일
- python
- docker
- ubuntu
- 알뜰요금제
- github
- ipTIME
- 이클립스
- 맥북
- ggplot2
- Spring
- R
- heroku
- javascript
- MyBatis
- 막대그래프
- Google Chart Tools
- 마인크래프트
- vagrant
- eclipse
- 자급제폰
- ggplot
- 셀프개통
- java
- 도넛차트
- Oracle
- 아이맥
- 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 |
글 보관함