ggplot2移动构面布局

sjf*_*fox 4 r facet ggplot2

我想手动(或自动)改变R中ggplot2图形的分面图的面板布局.我已经看到了Facets的注释和重新排序的解决方案,但不是这个特定的问题.这是一个可重复的例子:

library(ggplot2)
plot <- ggplot(diamonds, aes(carat, price)) + facet_wrap(~cut) + geom_point()
Run Code Online (Sandbox Code Playgroud)

如果我现在查看绘图,您会看到空白构面分配在绘图网格的右下角.

在此输入图像描述 我想做的就是让空白绘图位置在左上角,但仍然绘制所有其他绘图(只需移动空白绘图位置).

我试过ggplot_build()这样看:

plot_build <- ggplot_build(plot)
plot_build$panel$layout
Run Code Online (Sandbox Code Playgroud)

但我无法弄清楚如何将空白绘图位置实际移动到正确的行和列.有没有人有任何想法?

bap*_*ste 6

你可以在gtable中移动面板,

library(grid)
library(ggplot2)

p <- ggplot(diamonds, aes(carat, price)) + 
      facet_wrap(~cut) + geom_point()

g <- ggplotGrob(p)

gl <- g$layout
idcol <- gl$r == (ncol(g)-2)
g$layout[idcol & gl$b < 5, c("t", "b")] <- gl[idcol & gl$b < 5, c("t", "b")] + 4
grid.newpage()
grid.draw(g)
Run Code Online (Sandbox Code Playgroud)

在此输入图像描述