gpt4 book ai didi

r - grid.arrange 使用绘图列表

转载 作者:行者123 更新时间:2023-12-02 12:24:27 27 4
gpt4 key购买 nike

我觉得我总是在问同一个问题的不同变体:(

我最近使用 do.call 函数在 grid.arrange 上显示了一个绘图+表格列表

library(grid)
library(ggplot2)
library(gridExtra)

g1 <- ggplot(data.frame(x=c(0, 10)), aes(x)) + stat_function(fun=sin)
g2 <- ggplot(data.frame(x=c(0, 10)), aes(x)) + stat_function(fun=tan)
g3 <- ggplot(data.frame(x=c(0, 10)), aes(x)) + stat_function(fun=cos)
g4 <- tableGrob(data.frame(x <- 1:10, y<-2:11, z<-3:12))

plist <- list(g1,g2,g3,g4)
do.call("grid.arrange", c(plist))

这可行,但我需要根据变量“numruns”生成“plist”我已经尝试过这个,但它不起作用:

plist2 <- list(paste0("g", seq_len(numruns+1)))
do.call("grid.arrange", c(plist2))

我相信我正在做的是调用 grid.arrange("g1","g2", ...) 而不是 grid.arrange(g1,g2, ...)。我在使用 lapply 之前解决了类似的问题,但在这种情况下这似乎对我没有帮助,或者我错误地使用了它。

感谢您的帮助。

最佳答案

您可以像这样使用mget:

plist2 <- mget(paste0("g", 1:4))
do.call(grid.arrange, plist2)

但最好在创建绘图时将其放入列表中,如下所示:

funs <- c(sin, tan, cos)
DF <- data.frame(x=c(0, 10))

g <- lapply(funs, function(fun, df) {
ggplot(df, aes(x)) + stat_function(fun=fun)
}, df=DF)

#g[[4]] <- tableGrob(data.frame(x = 1:10, y = 2:11, z = 3:12))
#better for programmatic use:
g <- c(g, list(tableGrob(data.frame(x = 1:10, y = 2:11, z = 3:12))))

do.call(grid.arrange, g)

关于r - grid.arrange 使用绘图列表,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23570514/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com