Data Analysis

R/ggplot2(시각화)

[R] ggplot2 (3) 측면(facets)으로 나누어 그리기

Holy_Water 2022. 11. 30. 10:54

원래의 그래프를 또 다른 변수의 측면에서 세분화하여 살펴보는 방법으로는 도형의 다른 속성에 해당 변수를 대응시키는 것 말고도 해당 변수값에 따라 데이터를 나누어 각각에 대한 그래프를 그려볼 수도 있다. ggplot2에서는 이러한 방식으로 그래프를 그리는 것을 측면(facets)으로 나누어 그래프를 그린다고 한다.

 

 

 

facet_wrap()로 일차원 측면 그래프 그리기

다음은 facet_wrap() 함수의 사용법을 보여준다. ~ 은 R에서 수식을 표현할 때 사용되는데, facet_wrap() 함수는 수식을 인수로 입력받는다. facet_wrap() 함수는 ~ 우변에 기술된 변수를 측면(facets)으로 하여 데이터를 나누어 그래프를 그린다. 이 때 측면(facets)으로 사용되는 변수는 범주형 데이터이어야 한다. facet_wrap()은 부분 그래프가 많아지면 줄바꿈하여 그래프를 표시한다. ncol이나 ncol을 설정하면 그래프의 행과 열의 수를 지정하여 줄바꿈 처리를 제어할 수 있다.

> ggplot() + geom_point(mapping=aes(x=displ, y=hwy), data=mpg) +
+   facet_wrap(~class, nrow = 2)

두 개 이상의 변수를 조합하여 측면을 만드려면 다음처럼 수식의 우변에 두 개의 변수를 +로 연결하여 기술하면 된다.

> ggplot() + geom_point(mapping=aes(x=displ, y=hwy), data=mpg) +
+   facet_wrap(~drv + year, nrow = 2)

 

 

 

facet_grid()로 이차원 측면 그래프 그리기

원래 그래프를 두 변수의 측면에서 나누어 그리기를 하려면 facet_grid()를 사용하는 것이 좋다. facet_grid()도 수식은 인수로 입력 받는데, 수식의 좌변과 우변에 데이터의 변수를 지정할 수 있다. 그러면 수식의 좌변에 기술된 변수를 그래프의 행으로, 우변에 기술된 변수를 그래프의 열로 하여 측면 그래프를 그린다.

> ggplot() + geom_point(mapping=aes(x=displ, y=hwy), data=mpg) +
+   facet_grid(drv~cyl)

facet_wrap() 함수와 마찬가지로 수식의 좌변과 우변에 +로 하나 이상의 변수를 지정할 수 있다.

> ggplot() + geom_point(mapping=aes(x=displ, y=hwy), data=mpg) +
+   facet_grid(drv+year~cyl)