2013-12-08 3 views
37

두 기능 모두에 대해 ggplot2 설명서를 읽었습니다. 차이점과 각 기능을 사용하기에 적합한 상황이 궁금했습니다 (facet_wrap()facet_grid()).ggplot2의 facet_wrap()과 facet_grid()의 차이점은 무엇입니까?

library(ggplot2) 

p <- qplot(displ, hwy, data = mpg) 
p + facet_wrap(~ cyl) 

p + facet_grid(~ cyl) 

나는이 작은 예를 출발점으로 제공합니다. 차이점이 랩으로 표시되어 플롯이보다 자율적이고 그리드가 하나의 플롯을 함께 만듭니다.

+5

hadley가 인식하지 못하는 경우 http://docs.ggplot2.org/current/에 전자 버전의 설명서가 있습니다. 두 기능의 차이점을 확인하는 데 도움이 될 수 있습니다. –

답변

24

아래의 대답은 facet_grid() 또는 facet_wrap()에 2 개의 인수가있는 경우를 나타냅니다.

facet_grid(x ~ y) 일부 플롯이 비어있는 경우에도 x*y 플롯이 표시됩니다. 예 :

library(ggplot2) 
g <- ggplot(mpg, aes(displ, hwy)) 

4 개의 별개의 7 개의 클래스 값이 있습니다.

g + geom_point(alpha=1/3) + facet_grid(cyl~class) 

4 개의 별개의 클래스 값과 7 개의 별개의 클래스 값이 있습니다. 일부는 비어 있어도 4 * 7 = 28 플롯을 표시합니다 (일부 클래스는 해당 실린더 값이 없기 때문에 class = "midsize"의 행에는 해당하는 cyl = "5"값이 없습니다) facet_wrap(x ~ y) 반면에 실제 값을 갖는 플롯 만 표시합니다.

이제는 cyl와 클래스의 조합마다 하나씩 19 개의 플롯이 표시됩니다.

20

facet_wrap(...) 문자열이 하나의 변수를 기반으로 서로 다른 프레임 (패싯)으로 구성됩니다. ggplots

p + facet_grid(cyl~class) 

또한 각 패싯 그룹 세번째 변수를 사용할 수있다 :

qplot(displ, hwy, data=mpg,color=factor(year)) + facet_grid(cyl~class) 

가 #cylinders 의한 변위 대 HWY 연비의 개선 (또는 이의 결여)을 나타낸다 facet_grid(...)는 두 변수를 취할 수 그리고 수업.

+4

'facet_wrap'도 두 개의 변수를 취할 수 있습니다. – marbel

4

단일 변수 플롯의 경우 facet_grid() 또는 facet_wrap()을 사용할 수 있습니다.

facet_wrap(~variable)은 레벨 수가 variable 인 대칭 행렬을 반환합니다.

facet_grid(.~variable)은 수평으로 분포 된 variable 수준의 패싯을 반환합니다.

facet_grid(variable.~)은 수직으로 분포 된 variable 수준의 패싯을 반환합니다.