티스토리 뷰
ggplot2 에서 x축의 눈금선(ticks) 위치와 레이블(label) 변경방법을 정리해본다. 이전 포스팅에서 그렸던 라인그래프를 가져와서 이용하긴 할텐데, 여기서도 다시 그릴거라 참고만 하시면 된다.
ggplot2 라인차트 그리기
ggplot2 로 라인차트, 선그래프를 그리고자 한다. 그리고 왼쪽편 그래프를 오른쪽처럼 디자인 해본다. 데이터를 만드는데 생각보다 신경을 많이썼다. 조금씩 누적되어 가파른 증가속도를 보여주
emflant.tistory.com
그래프를 그릴 데이터를 조금 수정한다. 개월수만큼 4년치인 x 축을 1~48로 셋팅하였다.
set.seed(2200)
tb = tibble(x = 0:48, y = runif(48 + 1, min = 0, max = x^2+10)) %>%
mutate(z = (cumsum(y) + 800) / 15)
내가 원하는 x축은 아래와 같은 모양을 만들고 싶었다. 하나씩 진행해보자.
첫번째로, 아래와 같이 더 촘촘하게 만들어 놓아야 하는데, scale_x_continuous 의 breaks와 labels 입력값을 이용하면 된다. breaks 는 0, 6, 12, 18 ... 위치에 눈금을 추가하는 거고, labels 는 눈금 밑의 텍스트를 정의하면 된다. 동일하게 우선은 숫자를 입력했다.
scale_x_continuous(breaks = seq(0,48,6), labels = seq(0,48,6))
두번째로 불필요한 텍스트(레이블)을 임의로 변경한다. labels 에 자유롭게 정의하면 되는데, 여기서 주의할 점은 breaks 와 갯수가 동일해야 한다.
scale_x_continuous(breaks = seq(0,48,6),
labels = c("", "'2019", "", "'20", "", "'21", "", "'22", ""))
마지막으로 불필요한 눈금(ticks) 를 지우면 된다. 아래와 같이 년도별 구간처럼 보이게 된다. theme 내에서 axis.ticks.x 속성을 지정할때, 원하는 눈금위치에 NA 로 지정하면 해당위치의 눈금이 없어지게 된다.
theme(axis.ticks.x = element_line(
color = c("black", NA, "black", NA, "black", NA, "black", NA, "black")
)
)
최종 결과이다.
library(tidyverse)
set.seed(200)
tb = tibble(x = 0:48, y = runif(48 + 1, min = 0, max = x^2+10)) %>%
mutate(z = (cumsum(y) + 800) / 15)
ggplot(tb, aes(x,z)) +
geom_line(size = 1, color = "#54278f") +
geom_area(aes(x,z), fill = "#54278f", alpha = 0.4) +
scale_x_continuous(limits = c(0, 53),
breaks = seq(0,48,6),
labels = c("", "'2019", "", "'20", "", "'21", "", "'22", ""),
expand = expansion(0)) +
scale_y_continuous(breaks = seq(0,1500, 300), limits = c(0,1500),
position = "right", expand = expansion(c(0, 0.05))) + # 5%가 디폴트값.
theme_minimal(base_family = "BMDoHyeon-OTF", base_size = 12) + #PTMono-Bold
theme(
panel.grid = element_blank(),
panel.grid.major.y = element_line(colour = "#d9d9d9"),
axis.title.x = element_blank(),
axis.title.y = element_blank(),
plot.margin = unit(c(1,1,.5,.7), units = "cm"),
axis.ticks.x = element_line(color = v_color),
axis.ticks.length.x = unit(0.2,"cm"),
axis.line.x = element_line(),
axis.text.x = element_text(margin = margin(0.2,0,0,0, unit = "cm")),
axis.text.y.right = element_text(hjust = 1, vjust = -0.8,
margin = unit(c(0,0,0,-1), "cm"))
)
- Total
- Today
- Yesterday
- Google Chart Tools
- ktm모바일
- MyBatis
- 도넛차트
- javascript
- 알뜰요금제
- python
- eclipse
- 아이맥
- 이클립스
- docker
- MySQL
- R
- ubuntu
- github
- ggplot
- MongoDB
- 자급제폰
- SVN
- ipTIME
- ggplot2
- 마인크래프트
- vagrant
- heroku
- 맥북
- Oracle
- 셀프개통
- 막대그래프
- java
- Spring
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |