Как организовать список переменных участков с помощью сетки.устроить?
library(ggplot2)
df <- data.frame(x=1:10, y=rnorm(10))
p1 <- ggplot(df, aes(x,y)) + geom_point()
plist <- list(p1,p1,p1,p1,p1)
# In my real example,a plot function will fit a ggplot to a list of datasets
#and return a list of ggplots like the example above.
Я хотел бы организовать участки с помощью grid.arrange()
in gridExtra
.
как бы я это сделал, если количество участков в plist
- это переменная?
это работает:
grid.arrange(plist[[1]],plist[[2]],plist[[3]],plist[[4]],plist[[5]])
но мне нужно более общее решение. мысли?
4 ответа:
Как насчет этого:
library(gridExtra) n <- length(plist) nCol <- floor(sqrt(n)) do.call("grid.arrange", c(plist, ncol=nCol))
можно использовать
grid.arrange()
иarrangeGrob()
со списками, пока вы указываете список с помощьюgrobs =
аргументов по каждой функции. Например, в приведенном примере:library(ggplot2) library(gridExtra) df <- data.frame(x=1:10, y=rnorm(10)) p1 <- ggplot(df, aes(x,y)) + geom_point() plist <- list(p1,p1,p1,p1,p1) grid.arrange(grobs = plist, ncol = 2) ## display plot ggsave(file = OutFileName, arrangeGrob(grobs = plist, ncol = 2)) ## save plot
для полноты картины (а как же этот старый, уже ответивший вопрос был возрожден, недавно) Я хотел бы добавить решение с использованием
cowplot
пакет:cowplot::plot_grid(plotlist = plist, ncol = 2)