Remove facet_wrap labels completely Remove facet_wrap labels completely r r

Remove facet_wrap labels completely


For ggplot v2.1.0 or higher, use element_blank() to remove unwanted elements:

library(MASS) # To get the datalibrary(ggplot2)qplot(  week,  y,  data = bacteria,  group = ID,  geom = c('point', 'line'),  xlab = '',  ylab = '') + facet_wrap(~ ID) + theme(  strip.background = element_blank(),  strip.text.x = element_blank())

In this case, the element you're trying to remove is called strip.

ggplot2 figure without panel titles


Alternative using ggplot grob layout

In older versions of ggplot (before v2.1.0), the strip text occupies rows in the gtable layout.

element_blank removes the text and the background, but it does not remove the space that the row occupied.

This code removes those rows from the layout:

library(ggplot2)library(grid)p <- qplot(  week,  y,  data = bacteria,  group = ID,  geom = c('point', 'line'),  xlab = '',  ylab = '') + facet_wrap(~ ID)# Get the ggplot grobgt <- ggplotGrob(p)# Locate the tops of the plot panelspanels <- grep("panel", gt$layout$name)top <- unique(gt$layout$t[panels])# Remove the rows immediately above the plot panelgt = gt[-(top-1), ]# Draw itgrid.newpage()grid.draw(gt)


I'm using ggplot2 version 1 and the commands required have changed. Instead of

ggplot() ... + opts(strip.background = theme_blank(), strip.text.x = theme_blank())

you now use

ggplot() ... + theme(strip.background = element_blank(), strip.text = element_blank())

For more detail see http://docs.ggplot2.org/current/theme.html


Sandy's updated answer seems good but, possibly has been rendered obsolete by updates to ggplot? From what I can tell the following code (a simplified version of Sandy's original answer) reproduces Sean's original graph without any extra space:

library(ggplot2)library(grid)qplot(week,y,data=bacteria,group=ID, geom=c('point','line'), xlab='', ylab='') +  facet_wrap(~ID) +  theme(strip.text.x = element_blank())

I am using ggplot 2.0.0.