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) 

我提供这个小例子作为起点。 差别似乎是包装使得情节更加自主和网格使一个情节一起。

下面的答案是指在facet_grid()facet_wrap()有两个参数的情况。

即使某些图是空的, facet_grid(x ~ y)也会显示x*y图。 例如:

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

有4个不同的cyl和7个不同的类别值。

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

有4个不同的cyl和7个不同的类别值。 上面显示了4 * 7 = 28的图,即使有些图是空的(因为有些类没有相应的柱面值,就像class =“midsize”的行没有任何对应的cyl =“5”值) facet_wrap(x ~ y)另一方面,只显示具有实际值的图。

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

现在有19个地块显示,每一个组合cyl和class。

facet_wrap(...)将基于单个variables的不同框架(构面)中的ggplots串在一起。 facet_grid(...)可以带两个variables:

 p + facet_grid(cyl~class) 

您也可以使用第三个variables在每个方面进行分组:

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

显示了hwy里程的改进(或缺乏)与#cylinders和class的排位。

对于单variables图,您可以使用facet_grid()facet_wrap()

facet_wrap(~variable)将返回facet_wrap(~variable)的对称matrix图。

facet_grid(.~variable)将返回等于水平分布的variable级别的构面。

facet_grid(variable.~)将返回等于垂直分布variable级别的构面。