그룹(집단, 요인) 간의 데이터 분포 형태, 변화 추이 등을 비교 분석하기에 유용한 방법으로 비교하려는 축을 기준으로 면을 분할하여 그래프를 그룹 간 비교하는 방법이 있습니다.

 

Lattice 패키지에서는 Trellis 를 사용하는데요, ggplot2 패키지에서는 facet_grid() 함수facet_wrap() 함수를 사용하여 면 분할을 구현할 수 있습니다.

 

Base Graphics 패키지에서는 par() 함수를 사용해서 면 분할을 지정해줄 수 있습니다만, x축과 y축의 scale이 들쭉날쭉해서 직접적으로 서로 비교하기가 곤란하거나, y축의 min, max 값이 그룹 간 숫자를 모두 감안해서 자동 설정되는 것이 아니다보니 분석가가 미리 y축 값의 범위를 계산해보고, 혹은 그려보고 나서 y축 값을 세팅해줘야 하므로 lattice나 ggplot2 대비 불편합니다.  따라서 집단간 비교를 위한 면 분할이 필요한 경우 ggplot2나 lattice 패키지를 권합니다.

 

MASS 패키지 내 무게(Weight), 고속도로연비(MPG.highway), 차종(Type, 범주형), 생산국가(Origin, 범주형) 의 4개 변수를 사용해서, x축에 무게(Weight), y축에 고속도로연비(MPG.highway), 그리고 면 분할의 기준으로 범주형 변수인 차종(Type)과 생산국가(Origin) 변수를 사용하겠습니다.

 

facet_grid()를 먼저 예제를 보이고, 그 후에 facet_wrap()의 예제를 들겠습니다.  두 함수가 비슷하면서도 조금 다릅니다.  분석가가 필요로 하는 아웃풋 이미지에 맞게 골라서 사용하면 되겠습니다.

 

 

(1) facet_grid()

 

> # facet_grid()
> ggplot(Cars93, aes(x=Weight, y=MPG.highway)) +
+   geom_point(shape=21, colour="black") +
+   facet_grid(Type ~ .)
 

 


 

> ggplot(Cars93, aes(x=Weight, y=MPG.highway)) +
+   geom_point(shape=21, colour="black") +
+   facet_grid(. ~ Type)

 

 

 

 


 

> ggplot(Cars93, aes(x=Weight, y=MPG.highway)) +
+   geom_point(shape=21, colour="black") +
+   facet_grid(Origin ~ Type)

 

 

 

 

 

 

 

(2) facet_wrap()

 

facet_wrap()는 ncol 또는 nrow 로 행 또는 열의 개수를 분석가가 지정할 수 있어서 좋은 점이 있습니다.

 

> # facet_wrap()
> ggplot(Cars93, aes(x=Weight, y=MPG.highway)) +
+   geom_point(shape=21, colour="black") +
+   facet_wrap( ~ Type, ncol=3)

 

 

 


 

> ggplot(Cars93, aes(x=Weight, y=MPG.highway)) +
+   geom_point(shape=21, colour="black") +
+   facet_wrap(Origin ~ Type, ncol=3)

 

 

 


 

> ggplot(Cars93, aes(x=Weight, y=MPG.highway)) +
+   geom_point(shape=21, colour="black") +
+   facet_wrap(Origin ~ Type, ncol=2)

 

 

 

 

많은 도움 되었기를 바랍니다.

 

이번 포스팅이 도움이 되었다면 아래의 '공감 ~♡' 단추를 꾸욱 눌러주세요.^^

 

 

Posted by R Friend R_Friend