Forzar etiquetas del eje x en facet_grid ggplot: las etiquetas del eje x difieren por fila

Estaba tan feliz de encontrar la mayor parte de una solución a mi pregunta en la publicación,"Forzar el texto del eje X en todas las facetas de un gráfico facet_grid".

Me gustaría crear un gráfico que se parezca un poco al OP Drew Steen, excepto que tengo más de dos filas de facetas y me gustaría hacer que las etiquetas de los ejes x sean diferentes para cada fila.

Hice una solución súper hacky con la increíble respuesta de @ baptiste (principalmente porque no estoy familiarizado con el paquete gtable), y me gustaría saber:

Si hay una solución más elegante que el desorden que escribí a continuaciónCómo insertar etiquetas para la fila "Premium" (centro).

Aquí está el código que adapté de @Drew Steen y @baptiste,

library(ggplot2)

diamondSub <-subset(diamonds, (cut=="Ideal" | cut=="Premium" | cut == "Very Good") & (color=="E" | color=="I"))

p<- ggplot(diamondSub, aes(x=carat, y=price)) + 
  geom_blank()+ 
  geom_point() +
  scale_x_discrete(breaks=c(1, 2, 3, 4), labels=c("a", "b", "c", "d")) +
  facet_grid(cut~color, scales="free_x")
p

p2<- ggplot(diamondSub, aes(x=carat, y=price)) + 
  geom_blank()+ 
  geom_point() +
  scale_x_discrete(breaks=c(1, 2, 3, 4), labels=c("f", "g", "h", "i")) +
  facet_grid(cut~color, scales="free_x")
p2

library(gtable)

g <- ggplotGrob(p)
g2 <- ggplotGrob(p2)

# locate the panels
panels <- grep("panel", g$layout$name)
panels2 <- grep("panel", g2$layout$name)

top <- unique(g$layout$t[panels])
top2 <- unique(g2$layout$t[panels2])
# intersperse a copy of the bottom axes
all <- gtable:::rbind_gtable(gtable:::rbind_gtable(g[seq.int(min(top)), ], 
                                                   g[max(top)+1,], "first"), 
                             g2[seq(min(top2)+1, nrow(g2)),], "first")
grid.newpage()
grid.draw(all)

Respuestas a la pregunta(1)

Su respuesta a la pregunta