La regla general para hacer nada en ggplot2 es,
- Crear una trama de datos que codifica la información que desea trazar
- Pass que la trama de datos a un geom
Esto se hace un poco más complicado en este caso debido al aspecto particular de la trama que desea modificar. Los poderes que se diseñan ggplot2 de una manera que separa elementos de datos de la gráfica (es decir, geom) de elementos que no son de datos (es decir, temas), y sucede que el fondo de la gráfica cae dentro de la categoría "no datos".
siempre existe la opción de modificar el objeto de la cuadrícula subyacente manually pero esto es tedioso y los detalles pueden cambiar con diferentes versiones de ggplot2. En cambio, emplearemos el "truco" al que se refiere Hadley en la pregunta this.
#Create a data frame with the faceting variables
# and some dummy data (that will be overwritten)
tp <- unique(tips[,c('sex','day')])
tp$total_bill <- tp$tip <- 1
#Just Fri
ggplot(tips,aes(x=total_bill, y = tip/total_bill)) +
geom_rect(data = subset(tp,day == 'Fri'),aes(fill = day),xmin = -Inf,xmax = Inf,
ymin = -Inf,ymax = Inf,alpha = 0.3) +
geom_point(shape=1) +
facet_grid(sex ~ day)

#Each panel
ggplot(tips,aes(x=total_bill, y = tip/total_bill)) +
geom_rect(data = tp,aes(fill = day),xmin = -Inf,xmax = Inf,
ymin = -Inf,ymax = Inf,alpha = 0.3) +
geom_point(shape=1) +
facet_grid(sex ~ day)

Gracias mucho para la ayuda. Definitivamente útil. – broccoli
Tenga en cuenta que establecer panel.background y el geom_rect anterior se comportan de manera diferente cuando se encuentra detrás de geom_raster porque se puede realizar una optimización cuando no hay "nada" detrás del ráster. Cuando se guarda como un pdf, la versión geom_rect es un archivo significativamente más grande y prácticamente imposible de abrir con la mayoría de los lectores de PDF. – momeara
¿Es posible hacer esto con una función y escala continuas? – UnivStudent