Changing height of strip text background in ggplot

2019-06-22 16:48发布

###Load libraries

library(ggplot2)
library(gtable)

###Build plot

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

###Change height of strip text

g <- ggplotGrob(d)
g$heights[[3]] = unit(2,"in")
grid.newpage()
grid.draw(g)

Obtained result (ggplot2_2.0.0)

enter image description here

Expected result (ggplot2_1.0.1)

enter image description here

Question

What in middle earth is going on here?

标签: r ggplot2 gtable
1条回答
Luminary・发光体
2楼-- · 2019-06-22 17:12

This seems to do the trick

g <- ggplotGrob(d)
g$heights[[3]] = unit(2,"in")
g$grobs[[5]]$heights <- g$grobs[[6]]$heights <-
    g$grobs[[7]]$heights <- unit(1, "native") # or "npc"
grid.newpage()
grid.draw(g)

enter image description here

It also works if you replace unit(1, "native") by a positive number, or TRUE (I am not sure why though - probably at some point this is coerced to a default type unit, likely "npc")

查看更多
登录 后发表回答