Facetting is the process of dividing a plot into subplots based on the values of a discrete variable. In the context of the Iris scatterplots, we can split by species across multiple plots.
ggplot(iris, aes(x=Sepal.Length, y=Petal.Length)) + geom_point() + facet_grid(.~Species)
As you can see,
facet_grid() splits our single plot into a number of plots equal to the levels of the factor we specify. The syntax behind
facet_grid() specifies our “rows” and “columns” for our plots separated by a ~ tilde. E.g.
If we dont have a factor for one of the column/row arguments, we just place a full stop.
A better example of this is using
facet_wrap() with our weeds bar graph.
facet_wrap() sorts the graphs into a rectangular layout by default.
weeds.bar2 <- ggplot(weeds.summarise2, aes(x=species, y=mean, fill=species))+ geom_bar(stat="identity", show.legend=F, colour="black")+ labs(x="Weed Species", y= expression(Flowers~(m^3)))+ theme(panel.background = element_blank(), panel.grid = element_blank(), axis.line = element_line(colour = "black", size=1), axis.text = element_text(colour="lightsteelblue4", size=12), axis.title = element_text(colour="steelblue", size=14, face="bold"))+ scale_fill_manual(values = c("lightblue", "steelblue", "darkslateblue"))+ geom_errorbar(aes(ymin = mean-se, ymax = mean+se), width=0.5)+ ylim(0, 50)+ facet_wrap(~soil) weeds.bar2
As you can see, we have facetted by soil, creating two bar graphs of species by flowers, for each level of soil.
facet_wrap() we only specify one variable. This is useful for factors with many levels as it will automatically wrap to multiple rows. That is to say, instead of having 5 plots in a single row it might place 3 in the top row and 2 in the bottom.