2014-05-14 22 views
4

R有没有什么方法可以同时创建一个png和一个pdf,而不必两次运行相同的代码?我希望生成一些数字的光栅和矢量版本,而无需进行外部转换,并且在可能的情况下不重新运行代码。 dev.copy2pdf听起来像我所需要的,但它似乎只适用于交互式设备。同时创建pdf和png

下面是我在做什么的例子:

pdf("temp.pdf") 
plot(1:10) 
#more drawing here 
dev.off() 

png("temp.png") 
plot(1:10) 
#more drawing here 
dev.off() 

其中我想缩短:

start() 
plot(1:10) 
#more drawing here 
saveToPDF() 
saveToPNG() 

回答

4

有一个现有的功能dev.copy2pdf(),这不只是它说什么它会。还有一个功能dev.print()其中看起来像它会复制到一个"*.png"文件很容易,但在我的经验相当h。。采取一切他们的论据在同一顺序的熟悉和相关pdf()png()功能

下面的两个职能运转良好,并有被统一命名为补充的优势,以及:

saveToPDF <- function(...) { 
    d = dev.copy(pdf,...) 
    dev.off(d) 
} 

saveToPNG <- function(...) { 
    d = dev.copy(png,...) 
    dev.off(d) 
} 

## Try them out 
plot(rnorm(99), col="red") 
saveToPDF("my.pdf", height=4,width=7) 
saveToPNG("my.png", height=600, width=400) 
+0

肯定的,但是我如何在不创建/更新当前交互式图形设备的情况下执行此操作?例如,假设你正在执行'rnorm(99999)',你不需要等待当前的图形设备更新 – Noah

+0

@Noah。我不知道我跟着你。当您在问题的最终代码块中运行代码时,您对这些函数的行为不喜欢什么? –

+0

有大量的数据点(百万),要花很长时间才能进行屏幕显示,然后保存为png和pdf;有什么办法可以避免使用交互式图形设备(也就是说,不要阴谋屏幕)? – Noah