티스토리 뷰

반응형

ggplot2 그래프 일부분만 줌인해서 확대해서 보거나, 더 넓은 범위위에서 전체그림을 보고 싶을 때가 있다. ggplot 라이브러리의 coord_cartesian 함수를 사용하면 그래프를 x축 y축을 축소, 확대 하는게 손쉽게 가능하다.

가볍게 라인그래프 하나 그려본다.

library(tidyverse)

t = tibble(x = c(4,5,6), y = c(50, 30, 40))

ggplot(t, aes(x, y))+
	geom_line()

 

여기서 값은 3개뿐이지만, 그 외의 범위로 보고 싶다면 어떻게 해야 할까. 만약 x 축을 1~10의 범위로 보고싶다면, 아래와 같이 실행하면 된다. limits 로 1에서부터 10까지 보고싶은 범위를 지정하고, breaks 를 이용해서 x 축의 레이블을 정한다. 2개 예제 다 동일한 결과를 가져오긴 하지만 이건 원래 그래프 값보다 더 넓은 범위를 보여주다보니 차이가 느껴지지 않는 것이고, 줌인을 하면 달라진다. 

ggplot(t, aes(x, y))+
  geom_line() +
  scale_x_continuous(limits = c(1,10), breaks = seq(1,10,0.5))

ggplot(t, aes(x, y))+
  geom_line() +
  coord_cartesian(xlim = c(1,10)) +
  scale_x_continuous(breaks = seq(1,10,0.5))

반응형

만약 scale_x_continuous  에서 limits 를 4.5~5.5 로 변경하면 어떻게 될까. warning 이 나오면서 2개의 missing values 가 생겼다고 한다. 그래프에는 아무것도 표시가 안된다. 이유는 scale_x_continuous 로 limit 를 정해버리면 앞서 데이터 t 에 정해진 x 축 3개 값중에 1개만 포함이 되다보니, 선을 연결할 데이터가 없어져 그래프가 그려지지 않는다. 

ggplot(t, aes(x, y))+
  geom_line() +
  scale_x_continuous(limits = c(4.5, 5.5))

geom_path: Each group consists of only one observation. Do you need to adjust the
group aesthetic?
Warning message:
Removed 2 row(s) containing missing values (geom_path).

 

그래서 값을 한정하는게 아니라 보여주는 범위만 좁혀서 줌인을 하고 싶다면, coord_cartesian 로 지정해야 한다. 그래프의 값이 누락됨이 없이 원하는 범위 기준으로 확대됨을 볼 수 있다.

ggplot(t, aes(x, y))+
  geom_line() +
  coord_cartesian(xlim = c(4.5, 5.5))

 

breaks 를 추가로 정의해서 x 축 레이블을 지정할 수 있다.

ggplot(t, aes(x, y))+
  geom_line() +
  coord_cartesian(xlim = c(4.5,5.5)) + 
  scale_x_continuous(breaks = seq(4.7, 5.3, 0.1))

반응형
공지사항
최근에 올라온 글
최근에 달린 댓글
Total
Today
Yesterday
링크
«   2024/05   »
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
글 보관함