2013-11-21 34 views
3

下面的代码产生图像:R代码里面不保存情节图像

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() 
} 
+0

对于'lattice'情节,我相信,你必须明确地'print'它们,将它们保存在一个循环。例如'latPlot < - levelplot(...); print(latPlot)' – ialm

+1

此外,请参阅R中的此链接常见问题解答:[7.22为什么格子/格子图形不起作用?](http://cran.r-project.org/doc/FAQ/R-FAQ.html #为什么-DO-lattice_002ftrellis图形 - 不work_003f) – ialm

回答

5

那么,我只是写我在评论中写的东西作为答案。

当绘制自己的循环或函数中latticeggplot2地块,你必须明确地printlattice/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