geom_line, geom_segment - linetype 사용법

ggplot2 에서 선을 그리는 방법은 다양하다. geom_line, geom_segment 등을 가지고 평면위에 선을 그릴 수 있다. 아래 그래프는 ggplot2 로 그린 그래프이고, 막대그래프 중간에 보조선을 하나 그어줬다. 여기에 보면 점선으로 그려졌는데, 이것 말고도 여러가지 라인타입을 설정할 수 있고, 그 부분을 정리해볼까 한다.

데이터 만들기

2개의 막대그래프에 보조선하나 그릴 데이터를 하나 만든다. x값은 막대그래프 위치가 될것이고, y는 막대그래프 높이값, 그리고 z는 보조선의 y축값이 될것이다.

tb1 = tibble(x = c(1, 2),
             y = c(3.5, 7.7),
             z = 2) 

# A tibble: 2 × 3
      x     y     z
  <dbl> <dbl> <dbl>
1     1   3.5     2
2     2   7.7     2

그래프 그리기

geom_col 함수로 막대그래프를 그린다.

ggplot(tb1) +
  geom_col(aes(x,y), width = 0.5)

그 위에 높이2인 막대그래프를 덧대어 그린다.

ggplot(tb1) +
  geom_col(aes(x,y), width = 0.5) +
  geom_col(aes(x,z), width = 0.5, fill = "gray")

마지막으로 geom_segment 로 선을 하나 그려준다. 해당 geom_segment 함수 사용법은 여기를 클릭하여 참고한다. linetype을 지정하지 않으면 그냥 실선으로 나온다.

ggplot(tb1) +
  geom_col(aes(x,y), width = 0.5) +
  geom_col(aes(x,z), width = 0.5, fill = "gray") +
  geom_segment(x = 0, y = 2, xend = 3, yend = 2)

linetype

ggplot2 에서 선을 그리게 되면 linetype 을 지정하여 선종류를 변경할 수 있다. 하나씩 보고 필요한 선종류로 대체하면 된다.

ggplot(tb1) +
  geom_col(aes(x,y), width = 0.5) +
  geom_col(aes(x,z), width = 0.5, fill = "gray") +
  geom_segment(x = 0, y = 2, xend = 3, yend = 2,
               linetype = "solid")

ggplot(tb1) +
  geom_col(aes(x,y), width = 0.5) +
  geom_col(aes(x,z), width = 0.5, fill = "gray") +
  geom_segment(x = 0, y = 2, xend = 3, yend = 2,
               linetype = "dashed")

ggplot(tb1) +
  geom_col(aes(x,y), width = 0.5) +
  geom_col(aes(x,z), width = 0.5, fill = "gray") +
  geom_segment(x = 0, y = 2, xend = 3, yend = 2,
               linetype = "dotted")

ggplot(tb1) +
  geom_col(aes(x,y), width = 0.5) +
  geom_col(aes(x,z), width = 0.5, fill = "gray") +
  geom_segment(x = 0, y = 2, xend = 3, yend = 2,
               linetype = "dotdash")

ggplot(tb1) +
  geom_col(aes(x,y), width = 0.5) +
  geom_col(aes(x,z), width = 0.5, fill = "gray") +
  geom_segment(x = 0, y = 2, xend = 3, yend = 2,
               linetype = "longdash")

ggplot(tb1) +
  geom_col(aes(x,y), width = 0.5) +
  geom_col(aes(x,z), width = 0.5, fill = "gray") +
  geom_segment(x = .5, y = 2, xend = 3, yend = 2,
               linetype = "twodash")


더 보면 좋을 글들