在R中将点图保存为pdf

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包中的特殊命令或者我在哪里犯了错误?
感谢您的任何帮助。
1个回答

10

刚刚意识到我需要在print()中包装dotplot:

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

看起来问题已经解决了。


我认为你也可以用plot()将其包装起来。 - Tal Galili
是的,我在发布问题后就找到了答案。在dotplot或lattice的帮助文件中找到了。 - Jared

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接