ggplot2 보조선 그리기 - geom_abline, geom_vline, geom_hline

ggplot2 로 그래프를 그리다가 추가적인 보조선을 그리고 싶을 때가 있다. 예를 들면, 아래와 같은 꺾은선그래프에서는 y = 0 인 직선을 그려주면, 음의 방향으로 그래프를 향하는 부분을 쉽게 강조할 수 있다. 이와 같이 수직선, 수평선 혹은 일차방정식에 해당하는 기울기가 있는 직선을 보조선으로 사용하는 방법을 정리해본다.

데이터 만들기

여기를 클릭하여 데이터를 다운 받는다. 그냥 날짜별로 값이 존재하는 단순한 테이블이다. 여기에 x 라는 필드를 추가할 건데, row 일련번호를 넣어줬다.

tb1 = read_csv("./2022/20221209/data.csv") %>% 
  mutate(x = row_number())
# A tibble: 15 × 3
   date       value     x
   <date>     <dbl> <int>
 1 2021-09-01   2.5     1
 2 2021-10-01   2.2     2
 3 2021-11-01   1.7     3
 4 2021-12-01   1.8     4
 5 2022-01-01   1.4     5
 6 2022-02-01   1.4     6
 7 2022-03-01   1.2     7
 8 2022-04-01   1.1     8
 9 2022-05-01   1.1     9
10 2022-06-01   0.9    10
11 2022-07-01   1.1    11
12 2022-08-01   0.9    12
13 2022-09-01   0.6    13
14 2022-10-01   0.2    14
15 2022-11-01  -1      15

기본 그래프 그리기

아까 만든 데이터를 가지고, 간단하게 선그래프1를 그린다.

ggplot(tb1, aes(x, value)) +
  geom_line(colour = "yellowgreen", size = 2) +
  theme_bw()

geom_hline

geom_hline을 사용해서 수평의 보조선을 그릴 수 있다. 수평선은 기울기가 0인, y축의 하나의 값만 있으면 되는 직선이기 때문에, yintercept 값으로 수평선의 위치가 정해진다. 여기서 색상은 tomato2를 사용했는데, 본인이 원하는 색상으로 셋팅하도록 한다.

ggplot(tb1, aes(x, value)) +
  geom_line(colour = "yellowgreen", size = 2) +
  geom_hline(yintercept = 0, size = 1, colour = "tomato") +
  theme_bw()

geom_vline

수직형 보조선을 그리기 위해서는 geom_vline 함수를 사용한다. 수직선이기 때문에 x축의 위치를 나타내는 xintercept의 값만 셋팅하면 된다. linetype3 를 셋팅하면 직선말고도 다양한 선으로 표현할 수 있다.

ggplot(tb1, aes(x, value)) +
  geom_line(colour = "yellowgreen", size = 2) +
  geom_vline(xintercept = 12, size = 0.8, 
             colour = "tomato", linetype = "dashed") +
  theme_bw()

geom_abline

geom_abline 함수는 기울기를 가지는 직선형 보조선을 그릴때 사용한다. y = ax + b 라는 일차방정식의 직선형태를 나타내며, 기울기는 slope, y절편값은 intercept에 셋팅하면 된다.

ggplot(tb1, aes(x, value)) +
  geom_line(colour = "yellowgreen", size = 2) +
  geom_abline(slope = -0.2, intercept = 2.5, size = 1, 
              colour = "tomato", linetype = "dotdash") +
  theme_bw()


더 보면 좋을 글들