Tyl*_*ker 5 r ggplot2 gridextra r-grid
我想安排grid.arrange用于制作更复杂的副本的情节,然后grid.arrange用来组合这些复杂的副本.我在此任务中使用以下解决方案(/sf/answers/930711631/)来安排多个图并确保它们具有相等的宽度.这是代码的演示:
library(ggplot2); library(gridExtra)
gA <- ggplotGrob(A)
gB <- ggplotGrob(B)
maxWidth = grid::unit.pmax(gA$widths[2:5], gB$widths[2:5])
gA$widths[2:5] <- as.list(maxWidth)
gB$widths[2:5] <- as.list(maxWidth)
x <- grid.arrange(gA, gB, ncol=1)
y <- grid.arrange(gA, gB, ncol=1)
grid.arrange(x, y, ncol=2)
Run Code Online (Sandbox Code Playgroud)
在我的情况下要清楚,x并且y具有不同值的略有不同的图.我知道grid.arrange不会像其他基于网格的函数那样返回绘图.
如果您查看源代码grid.arrange,它只是一个包装器arrangeGrob
function (..., as.table = FALSE, clip = TRUE, main = NULL, sub = NULL,
left = NULL, legend = NULL, newpage = TRUE)
{
if (newpage)
grid.newpage()
grid.draw(arrangeGrob(..., as.table = as.table, clip = clip,
main = main, sub = sub, left = left, legend = legend))
}
Run Code Online (Sandbox Code Playgroud)
因此
require(ggplot2);require(gridExtra)
A <- ggplot(CO2, aes(x=Plant)) + geom_bar() +coord_flip()
B <- ggplot(CO2, aes(x=Type)) + geom_bar() +coord_flip()
gA <- ggplotGrob(A)
gB <- ggplotGrob(B)
maxWidth = grid::unit.pmax(gA$widths[2:5], gB$widths[2:5])
gA$widths[2:5] <- as.list(maxWidth)
gB$widths[2:5] <- as.list(maxWidth)
x <- arrangeGrob(gA, gB, ncol=1)
y <- arrangeGrob(gA, gB, ncol=1)
grid.arrange(x, y, ncol=2)
Run Code Online (Sandbox Code Playgroud)
将工作

| 归档时间: |
|
| 查看次数: |
2724 次 |
| 最近记录: |