Facets
An amazing features of ggplot, is facetting. Rather than explaining what they are, I will just show you:
Facetting groups the data and displays the data for each group. This allows for comparing multiple groups readily. Let’s see some other examples. Remember this graph:
ggplot(mpg, aes(x = displ, y = cty, colour = drv)) +
geom_point() +
geom_smooth(method = "lm", se = FALSE)
With facets:
ggplot(mpg, aes(x = displ, y = cty)) +
geom_point() +
geom_smooth(method = "lm", se = FALSE) +
facet_wrap(~drv)
We can also put them under one another:
ggplot(mpg, aes(x = displ, y = cty)) +
geom_point() +
geom_smooth(method = "lm", se = FALSE) +
facet_wrap(~drv, nrow = 3)
Or use multiple variables with facet_grid
ggplot(mpg, aes(x = displ, y = cty)) +
geom_point() +
geom_smooth(method = "lm", se = FALSE) +
facet_grid(year ~ drv)
Cool trick
One neat little trick is to have the raw data present in each facet. You can do this by using a dataframe that does NOT include the facetting variable. The data = transform(mpg, drv = NULL)
below means for this geom we will use a different dataset, which is the mpg
-dataset with the drv
-variable set to NULL
):
ggplot(mpg, aes(x = displ, y = cty)) +
geom_point(
data = transform(mpg, drv = NULL),
colour = "grey85"
) +
geom_point() +
geom_smooth(method = "lm", se = FALSE) +
facet_wrap(~drv)
This also works beautifully for histograms: