본문 바로가기

[R] ggplot 수직선, 수평선 그리기: vline, hline

R Programming/Data Visualization by Mandarim_ 2023. 10. 11.

본 게시글은 ggplot 에서 수직선, 수평선을 그리는 예시이다.

slope와 intercept를 설정하면 직선을 그어주는 geom_abline()도 있는데, 잘 쓰진 않는 것 같아서 생략한다.


수직선 geom_vline() / 수평선 geom_hline()

 

수직선 (Vertical; vline), 수평선 (Horizon, hline) 함수 모두 아래와 같은 사용 가능한 옵션이 존재한다.

 

  • intercept: vline의 경우 xintercept를, hline의 경우 yintercept를 설정한다.
  • linetype: 선의 형태를 지정할 수 있다.
  • color: 선의 색깔을 지정할 수 있다.
  • size: 선의 굵기를 지정할 수 있다.

R 내장 데이터인 mtcars 에 적용하면 다음과 같다.

scatter_plot <- ggplot(data=mtcars, aes(x=wt, y=mpg)) + geom_point() 

theme_set(theme_bw())
scatter_plot + geom_vline(xintercept = 5) # 왼쪽
scatter_plot + geom_hline(yintercept = 30) # 오른쪽

vline 그래프hline 그래프
왼쪽 그림: vline 적용, 오른쪽 그림: hline 적용


 

Time Series 데이터에 여러 시점에 대한 수직선 넣기

Time Sries 그래프에서 정책이 수행된 특정 시점을 vline()을 통해 표시하고자 한다. 

 

여러 개의 선을 한 번에 그리고자 할 때, 아래 처럼 interception을 vector로 사용할 수도 있다.

그리고 x축이 시간에 대한 변수라면, 그 값을 맞추어서 넣어줘야 한다.

(실제로 1일 마다 수행되진 않았으나, 

intervention <- as.Date(c("2020-03-01", "2020-05-01", "2020-06-01", "2020-11-01",
                         "2021-02-01", "2021-05-01", "2021-09-01", "2021-11-01",
                         "2022-03-01", "2023-03-01", "2023-06-01"))

final_plot + 
  geom_vline(xintercept=intervention, linetype="dashed", color="grey60") +
  geom_hline(yintercept=0)

수직선과 수평선까지 추가한 그래프

 

final_plot 은 아래 게시글을 참고하면 작성 가능하다.

 

[R] 이중 축 그래프 그리기: ggplot2, sec_axis 생성

이중 y축 그래프, 값의 범위가 다른 두 그래프 함께 나타내기 정부에서 제공하는 코로나19 그래프를 보면, 아래처럼, 코로나19와 연관있을 것으로 생각되고 코로나19 확진자 수와 함께 비교하고

hyemstat.tistory.com

반응형