Alexander
Alexander

Reputation: 4635

Placing labels outside of the strips in facet_grid

I wonder that how can we place labels left or right side of the facet_grid strips.

As a reproducible example I would like to start with this example

library(ggplot2)
    ggplot(mtcars, aes("", hp)) + 
      geom_boxplot(width=0.7, position=position_dodge(0.7)) + 
      theme_bw() +
      facet_grid(. ~ vs + am + carb,switch = 'both',labeller = label_both) +
      theme(panel.spacing=unit(0.2,"lines"),
            strip.background=element_rect(color="grey30", fill="grey90"),
            panel.border=element_rect(color="grey90"),
            axis.ticks.x=element_blank())+
            #strip.placement="outside") +
      labs(x="")

enter image description here

The plot which I look for;

enter image description here

Upvotes: 0

Views: 916

Answers (1)

baptiste
baptiste

Reputation: 77096

you can always add the titles manually to the gtable,

enter image description here

g <- ggplotGrob(p)

library(gtable)
library(grid)
library(gridExtra)
pos <- subset(g$layout, grepl("strip",name))
titles <- tableGrob(c("vs","am","carb"), theme = ttheme_minimal(9))
titles$heights <- unit(rep(1,3), "null")
g$widths[ncol(g)] <- sum(titles$widths)
g <- gtable_add_grob(g, titles, t=unique(pos$t), l = ncol(g)) 
grid.newpage()
grid.draw(g)

Upvotes: 3

Related Questions