Change facet label text and background colour

前端 未结 2 1480
时光说笑
时光说笑 2020-12-29 18:35

How can I change the grey facet labels (A and B) into say red background with white text?

A = data.table(x = 1:4, y = 1:4, z = c(\'A\',\'A\',\'B\',\'B\'))
gg         


        
相关标签:
2条回答
  • 2020-12-29 19:21

    You can do:

    ggplot(A) +
      geom_point(aes(x = x, y = y)) +
      facet_wrap(~z) +
      theme_bw()+
      theme(strip.background =element_rect(fill="red"))+
      theme(strip.text = element_text(colour = 'white'))
    

    0 讨论(0)
  • 2020-12-29 19:22

    For anyone else looking to change individual facet labels, there's a solution here:

    g <- ggplot_gtable(ggplot_build(p))
    stripr <- which(grepl('strip-r', g$layout$name))
    fills <- c("red","green","blue","yellow")
    k <- 1
    for (i in stripr) {
      j <- which(grepl('rect', g$grobs[[i]]$grobs[[1]]$childrenOrder))
      g$grobs[[i]]$grobs[[1]]$children[[j]]$gp$fill <- fills[k]
      k <- k+1
    }
    grid::grid.draw(g)
    

    0 讨论(0)
提交回复
热议问题