facet_wrap {ggplot2} | R Documentation |
Wrap a 1d ribbon of panels into 2d.
facet_wrap(facets, nrow = NULL, ncol = NULL, scales = "fixed", shrink = TRUE, as.table = TRUE, drop = TRUE)
nrow |
number of rows |
ncol |
number of columns |
facets |
formula specifying variables to facet by |
scales |
should scales be fixed ( |
shrink |
If |
as.table |
If |
drop |
If |
d <- ggplot(diamonds, aes(carat, price, fill = ..density..)) + xlim(0, 2) + stat_binhex(na.rm = TRUE) + theme(aspect.ratio = 1) d + facet_wrap(~ color) d + facet_wrap(~ color, ncol = 1) d + facet_wrap(~ color, ncol = 4) d + facet_wrap(~ color, nrow = 1) d + facet_wrap(~ color, nrow = 3) # Using multiple variables continues to wrap the long ribbon of # plots into 2d - the ribbon just gets longer # d + facet_wrap(~ color + cut) # To change plot order of facet wrap, # change the order of varible levels with factor() diamonds$color <- factor(diamonds$color, levels = c("G", "J", "D", "E", "I", "F", "H")) # Repeat first example with new order d <- ggplot(diamonds, aes(carat, price, fill = ..density..)) + xlim(0, 2) + stat_binhex(na.rm = TRUE) + theme(aspect.ratio = 1) d + facet_wrap(~ color) # You can choose to keep the scales constant across all panels # or vary the x scale, the y scale or both: p <- qplot(price, data = diamonds, geom = "histogram", binwidth = 1000) p + facet_wrap(~ color) p + facet_wrap(~ color, scales = "free_y") p <- qplot(displ, hwy, data = mpg) p + facet_wrap(~ cyl) p + facet_wrap(~ cyl, scales = "free") # Use as.table to to control direction of horizontal facets, TRUE by default p + facet_wrap(~ cyl, as.table = FALSE) # Add data that does not contain all levels of the faceting variables cyl6 <- subset(mpg, cyl == 6) p + geom_point(data = cyl6, colour = "red", size = 1) + facet_wrap(~ cyl) p + geom_point(data = transform(cyl6, cyl = 7), colour = "red") + facet_wrap(~ cyl) p + geom_point(data = transform(cyl6, cyl = NULL), colour = "red") + facet_wrap(~ cyl)