3

当此命令在函数内完成时,我无法将点图保存为 pdf。

正常调用时工作正常:

df <- data.frame(a = runif(10), b = runif(10), c = runif(10), x = 1:10)  
pdf("test.pdf")  
dotplot(a + b + c ~ x, data = df, type = "l", auto.key=TRUE)  
dev.off()

但是如果这段代码在函数内部,它将不起作用,只会生成一个空文件或空白文件:

plotFunc <- function(model)  
{  
    pdf("test.pdf")  
    dotplot(a + b + c ~ x, data = model, type = "l", auto.key=TRUE)  
    dev.off()  
}
plotFunc(df)

但是,在没有文件命令的情况下调用该函数将成功打印到图形窗口:

plotWinFunc <- function(model)  
{  
    dotplot(a + b + c ~ x, data = model, type = "l", auto.key=TRUE)  
}  
plotWinFunc(df)

这使我相信 dotplot() 应该输出到文件时出现问题。文件类型无关紧要,我尝试过使用 bmp 和 pdf ,但两种方法都不起作用。

如何成功地将点图写入文件?我是否必须使用 lattice 包中的特殊命令,还是在某处出现错误?

谢谢你的帮助。

4

1 回答 1

9

刚刚意识到我必须在 print() 中包装点图:

plotFunc <- function(model)    
{    
    pdf("test.pdf")    
    print(dotplot(a + b + c ~ x, data = model, type = "l", auto.key=TRUE))    
    dev.off()    
}  
plotFunc(df)

这似乎解决了它。

于 2010-02-16T23:34:36.197 回答