I've been reading the ggplot2
documentation for both functions. I was wondering what were the differences and what would be right situation for using each function (facet_wrap()
and facet_grid()
).
library(ggplot2)
p <- qplot(displ, hwy, data = mpg)
p + facet_wrap(~ cyl)
p + facet_grid(~ cyl)
I provide this small example to serve as starting point. The difference seems to be wrap makes the plots more autonomous and grid makes one plot all together.
The answer below refers to the case when you have 2 arguments in facet_grid()
or facet_wrap()
.
facet_grid(x ~ y)
will display x*y
plots even if some plots are empty.
Ex:
library(ggplot2)
g <- ggplot(mpg, aes(displ, hwy))
There are 4 distinct cyl and 7 distinct class values.
g + geom_point(alpha=1/3) + facet_grid(cyl~class)
The above displays 4 * 7 = 28 plots, even if some are empty (because some classes do not have corresponding cylinder values, like rows with class="midsize" doesn't have any corresponding cyl="5" value )
facet_wrap(x ~ y)
on the other hand, displays only the plots having actual values.
g + geom_point(alpha=1/3) + facet_wrap(cyl~class)
There are 19 plots displayed now, one for every combination of cyl and class.
facet_wrap(...)
strings together ggplots
in different frames (facets) based in a single variable. facet_grid(...)
can take two variables:
p + facet_grid(cyl~class)
You can also use a third variable to group in each facet:
qplot(displ, hwy, data=mpg,color=factor(year)) + facet_grid(cyl~class)
shows the improvement (or lack thereof) in hwy mileage vs. displacement by #cylinders and class.
For single variable plots you can use either facet_grid()
or facet_wrap()
.
facet_wrap(~variable)
will return a symmetrical matrix of plots for the number of levels of variable
.
facet_grid(.~variable)
will return facets equal to the levels of variable
distributed horizontally.
facet_grid(variable~.)
will return facets equal to the levels of variable
distributed vertically.
来源:https://stackoverflow.com/questions/20457905/whats-the-difference-between-facet-wrap-and-facet-grid-in-ggplot2