gpt4 book ai didi

r - 如何在循环内将图存储在列表中?

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

我在一个循环中工作,我想将绘图保存在一个列表中,这样我就可以将它们一起绘制在一个 .pdf 文件中。问题是列表没有正确填写并重新更新上次运行的结果。所以,最后我得到的是一个包含五个完全相同的元素的列表。

我知道这些循环可能看起来毫无用处,但我只是让它们创建一个尽可能接近真实代码的测试代码(具有可重现的错误)。所以,我需要让循环保持原样。

library (ggplot)
library (gridExtra)

plist <- list()

for (z in 1:5){
n <- 100
k <- seq(0, to=4500+z*2000, length=n)
tmp <- numeric(n)
for (i in 1:n){
tmp[i] <- (5*(i*3)^2)}

plist[[z]] <- ggplot() +
geom_line(aes(x = k, y = tmp)) +
theme_bw()

pdf(sprintf("p%s.pdf", z),
width = 6, height = 4, onefile = T)
plot(plist[[z]])
dev.off()
}

do.call(grid.arrange, c(plist, ncol = 5))

最佳答案

此答案基于:Storing plot objects in a list

library(ggplot2)
library(gridExtra)

plist <- list()

for (z in 1:5){
n <- 100
k <- seq(0, to=4500+z*2000, length=n)
tmp <- numeric(n)
for (i in 1:n){
tmp[i] <- (5*(i*3)^2)}

data <- data.frame(n, k, tmp)

plist[[z]] <- ggplot(data = data) + #data needs to be given!!
geom_line(aes(x = k, y = tmp)) +
theme_bw()

pdf(sprintf("p%s.pdf", z),
width = 6, height = 4, onefile = T)
plot(plist[[z]])
dev.off()
}

do.call(grid.arrange, c(plist, ncol = 5))

enter image description here

关于r - 如何在循环内将图存储在列表中?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41883409/

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