티스토리 뷰
반응형
최근 한국은행 기준금리가 계속 인상되고 있다. 이런 금리 인상을 표현할때, 그냥 꺽은선을 나타내기보다는 보통 계단식으로 표현되곤 한다. 상승이 되면 그 시점부터 다음 변동시기까지 같은 값으로 유지되는 y 축값을 표현할때 좋다. geom_step 함수를 이용하면 아래와 같은 그래프를 만들 수 있다.
다뤄볼 데이터는 한국은행 사이트에 있는 기준금리 정보를 가져다 사용한다.
tb_baserate = read_excel("~/github/ggplot2/2022/20220729/The Bank of Korea Base Rate.xlsx")
tb_baserate1 = tb_baserate %>%
unite("년도", "변경일자", col = "date", sep = " ") %>%
mutate(date = ymd(date)) %>%
rename(base_rate = 기준금리) %>%
arrange(date) %>%
filter(date >= ymd("2018-01-01"))
# A tibble: 11 × 2
date base_rate
<date> <dbl>
1 2018-11-30 1.75
2 2019-07-18 1.5
3 2019-10-16 1.25
4 2020-03-17 0.75
5 2020-05-28 0.5
6 2021-08-26 0.75
7 2021-11-25 1
8 2022-01-14 1.25
9 2022-04-14 1.5
10 2022-05-26 1.75
11 2022-07-13 2.25
보통의 라인그래프(선그래프)로 그리게되면 아래처럼 나오게 된다.
ggplot(tb_baserate1, aes(date, base_rate)) +
geom_line(size = 1)
하지만 geom_step 함수를 사용하면 대략 아래의 그래프를 만들 수 있다.
ggplot(tb_baserate1, aes(date, base_rate)) +
geom_step(size = 1)
반응형
계단형으로 그래프가 만들어지다보니, 실제 매핑되는 값의 위치가 어디인지 정확히 알기가 어려워서 점으로 표시해본다.
ggplot(tb_baserate1, aes(date, base_rate)) +
geom_step(size = 1) +
geom_point(size = 4) +
geom_point(size = 2, colour = "gray100")
마지막으로 디자인까지 적용하고나면, 아래의 결과를 얻을 수 있다. 포인트가 다 있는 거보다는 마지막에만 있는게 조금 더 깔끔한거 같다.
ggplot(tb_baserate1, aes(date, base_rate)) +
geom_step(size = 1, colour = in_colour) +
scale_x_date(limits = c(ymd("2018-11-30"), ymd("2022-12-31")),
breaks = x_breaks, labels = x_label) +
scale_y_continuous(limits = c(0.25,3),
breaks = seq(0,5,0.5)) +
annotate("rect", xmin = ymd("2022-03-13"), xmax = ymd("2022-11-13"),
ymin = 2.4, ymax = 2.8, fill = v_background_color) +
annotate("text", x = v_x, y = v_y + 0.25,
label = paste0(v_y, "%"),
family = "AppleSDGothicNeo-Bold", size = 5, colour = v_font_color) +
annotate("point", size = 3.5, colour = in_colour,
x = v_x, y = v_y) +
annotate("point", size = 1.5, colour = v_background_color,
x = v_x, y = v_y) +
theme_minimal(base_family = "AppleSDGothicNeo-Bold") +
theme(legend.position = "none",
axis.text = element_text(colour = v_font_color),
axis.line.x = element_line(colour = v_font_color, size = 1),
axis.text.x = element_text(margin = margin(0.1,0,0,0,"cm")),
axis.ticks.x = element_line(color = rep(c(v_font_color, NA), length.out = 9),
size = 1),
axis.ticks.length.x = unit(0.2,"cm"),
axis.title = element_blank(),
panel.grid = element_blank(),
panel.grid.major.y = element_line(size = .3, colour = v_font_color,
linetype = "dotted"),
plot.margin = margin(1,1,1,.8, "cm"),
plot.caption = element_text(color = v_font_color, family = "Menlo",
hjust = 1, size = 8,
margin = margin(0.5,0,0,0,"cm")),
plot.background = element_rect(fill = v_background_color, color = v_background_color))
반응형
공지사항
최근에 올라온 글
최근에 달린 댓글
- Total
- Today
- Yesterday
링크
TAG
- 도넛차트
- 맥북
- R
- ubuntu
- github
- 아이맥
- ktm모바일
- javascript
- 마인크래프트
- vagrant
- 알뜰요금제
- java
- 막대그래프
- docker
- Oracle
- python
- Spring
- MySQL
- MyBatis
- MongoDB
- ggplot2
- ipTIME
- SVN
- 자급제폰
- eclipse
- ggplot
- 셀프개통
- Google Chart Tools
- 이클립스
- heroku
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |
글 보관함