我想手动(或自动)改变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)
但我无法弄清楚如何将空白绘图位置实际移动到正确的行和列.有没有人有任何想法?
你可以在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)