2013-11-21 47 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