编辑条带大小ggplot2

时间:2017-01-02 14:06:15

标签: r ggplot2

我尝试应用此解决方案(How can I change the size of the strip on facets in a ggplot? 1)来更改ggplot中facet上的条带大小,我已经增加了高度

library(ggplot2)
library(gtable)

d <- ggplot(mtcars, aes(x=gear)) + 
            geom_bar(aes(y=gear), stat="identity", position="dodge") +
            facet_wrap(~cyl)

g <- ggplotGrob(d)
g$heights[[3]] = unit(5,"in")

grid.newpage()
grid.draw(g)

这就是我得到的,它只会增加条带顶部的空白(白色): enter image description here

为什么它的工作方式不同?

2 个答案:

答案 0 :(得分:25)

一个简单的解决方案是适当地指定strip.text元素的边距:

ggplot(mtcars, aes(x=gear)) + 
  geom_bar(aes(y=gear), stat="identity", position="dodge") +
  facet_wrap(~cyl) + 
  theme(strip.text.x = element_text(margin = margin(2,0,2,0, "cm")))

enter image description here

答案 1 :(得分:3)

这样的事似乎有效:

g$heights[[6]] <- unit(5,"in")
g$grobs[[17]]$heights <- unit(2,"in")
g$grobs[[18]]$heights <- unit(2,"in")
g$grobs[[19]]$heights <- unit(2,"in")

grid.newpage()
grid.draw(g)

请注意,查看g$grobs告诉我们第17,18和19栏是条带。

您可以使用以下方法自动完成第二步:

index <- which(sapply(g$grobs, function(x) x$name == "strip"))
g$grobs <- lapply(seq_along(g$grobs), function(.x) {
  if(.x %in% index) {
    g$grobs[[.x]]$heights <- unit(2,"in")
  } 
  g$grobs[[.x]]
} )

enter image description here