【问题标题】:R code doesn't save plot image [duplicate]R代码不保存绘图图像[重复]
【发布时间】:2013-12-06 10:33:25
【问题描述】:

以下代码生成图像:

library(latticeExtra)
x=runif(40)
y=runif(40)
z=runif(40)
png(filename=paste(i,".png",sep=""))
levelplot(z ~ x + y, panel = panel.levelplot.points, col.regions = rainbow(50))
dev.off()

但下面的代码没有。为什么?

library(latticeExtra)
for(i in seq(1,5)) {
    x=runif(40)
    y=runif(40)
    z=runif(40)
    png(filename=paste(i,".png",sep=""))
    levelplot(z ~ x + y, panel = panel.levelplot.points, col.regions = rainbow(50))
    dev.off()
}

【问题讨论】:

  • 对于lattice 的情节,我相信你必须明确地print 他们才能将它们保存在一个循环中。例如latPlot <- levelplot(...); print(latPlot)
  • 另外,请参阅 R 常见问题解答中的此链接:7.22 Why do lattice/trellis graphics not work?

标签: r plot png levelplot


【解决方案1】:

好吧,我就写一下我在c​​mets中写的作为答案。

在您自己的循环或函数中绘制latticeggplot2 绘图时,您必须明确print lattice/ggplot2 绘图

试试这个:

library(latticeExtra)
png(filename="plot_%02d.png")
for(i in seq(1,5)) {
    x=runif(40)
    y=runif(40)
    z=runif(40)
    # Assign your lattice plot to myPlot
    myPlot <- levelplot(z ~ x + y, panel = panel.levelplot.points, col.regions = rainbow(50))
    print(myPlot)
}
dev.off()

我相信这部分 R 常见问题解答与此处相关:7.22 Why do lattice/trellis graphics not work?

编辑:

我将png 代码更改为位于循环之前,并将dev.off() 置于循环之外。

png(filename="plot_%02d.png") 会将第一个图保存为plot_01.png,将第二个图保存为plot_02.png,以此类推。

【讨论】:

  • 我也有同样的问题,但plot(NA, xlim = 0:1, ylim = 0:1, bty = "n", axes = 0 ) 在循环内(即plot() 而不是ggplot)。但这个解决方案似乎并不适用。我的代码工作正常,但只要我将png() 放在它前面(和dev.off() after it,它就无法写入文件,甚至无法在 RStudio 查看器窗格中显示绘图
  • @stevec 最好将您的问题作为一个新问题提出。据我所知,plot() 不需要print 解决方法
猜你喜欢
  • 2020-06-17
  • 2013-07-02
  • 2018-03-26
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2018-08-25
相关资源
最近更新 更多