我尝试应用此解决方案(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)
为什么它的工作方式不同?
答案 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")))
答案 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]]
} )