R用for循环保存图(保存直方图有效)

Posted

技术标签:

【中文标题】R用for循环保存图(保存直方图有效)【英文标题】:R save plots with for loop (saving histograms works) 【发布时间】:2016-11-11 13:47:55 【问题描述】:

我想用 for 循环保存 300 个图,但不知何故,代码在控制台中工作,但没有保存任何图。我总是收到以下错误:

Error in plot_list[[i]] : subscript out of bounds

如果我绘制直方图,一切正常。

这是我的代码:

plot_list = list()
for (i in 1:300) 
  p <-plot(matrix(1:15000, nrow = 15000, ncol = 50), datamatrix[1:15000,var_list[i,1]:var_list[i,2]], main = layer_list[[1]][i], xlab = "r [micrometer]")
  plot_list[[i]] = p


for (i in 1:300) 
  png(paste("plot", i, ".png", sep = ""), width = 1200, height = 750)
  plot(plot_list[[i]], main = substitute(paste('Layer ', a), list(a=layer_list[[1]][i])), xlab = "r [micrometer]", ylab = " Frequency")
  dev.off()

如果我查看 plot_list,我会得到:

情节列表

list()

有人可以帮忙吗?谢谢!

【问题讨论】:

代码的第三行:p &lt;- plot(matrix ... 。否则p 未知。 BTW:为什么这么复杂?结合两个循环... 是的 p 没有定义 @J_F 你是对的,这就是我实际所做的。我仍然有同样的错误。 @J_F 是的,你是对的。我想我可以结合这两个循环。 【参考方案1】:

请尝试提供datamatrix,或至少提供head(datamatrix)

与在 cmets 中一样,您可以这样做是一个循环,并且不需要将对象保存到中间列表。

for (i in 1:300)   
  png(paste("plot", i, ".png", sep = ""), width = 1200, height = 750)

  plot(matrix(1:15000, nrow = 15000, ncol = 50),
        datamatrix[1:15000, var_list[i, 1]:var_list[i, 2]],
        main = sprintf("Layer %s", layer_list[[1]][i]),
        xlab = "r [micrometer]",
        ylab = "Frequency")

 dev.off()

【讨论】:

以上是关于R用for循环保存图(保存直方图有效)的主要内容,如果未能解决你的问题,请参考以下文章

R中多个变量的箱线图/直方图

将 pandas.Series 直方图保存到文件

在R中循环保存多个图

【R语言】--- 直方图

有效地计算 R 中大向量中成对差异的直方图?

R语言可视化及作图6--ggplot2之点图、条形图、盒形图、直方图、线图