在绘图时创建多种文件类型

时间:2015-09-29 13:26:33

标签: r sna

我想在高分辨率和低分辨率版本中生成一系列图表,或者使用两种不同的文件类型(.png和.eps)进行不同的说明。我想知道最好/最少重复的方法来做到这一点。我在gplot中使用了sna函数,并且绘图在绘图区域外有一个自定义图例。我写了一个像这样的函数:

library(sna)
plotfun <- function(net){
   png("test.png",width=800)
     p <- gplot(net)
     par(xpd=T)   
     legend(max(p[,1])+1,max(p[,2]),legend=letters[1:10],title="custom legend")
   dev.off()
   seteps()
   postscript(test.eps)
      #repeat all the plotting commands, which are much longer in real life
   dev.off()
}
#try it with some random data
plotfun(rgraph(10))

这是完美的功能,但似乎效率低,笨拙。这个问题的更一般的版本是:如果出于任何原因我想创建一个图(包括像我的自定义图例这样的额外图层),将它存储为一个对象,然后稍后绘制它,有没有办法做到这一点?顺便说一下,这个问题起初并不是sna特定的,但是在试图使用plot的类似函数重现问题时,我无法使图例正确显示,所以这个解决外部情节区域的传奇似乎并不普遍。

1 个答案:

答案 0 :(得分:0)

我建议仅在R的Postscript / PDF中生成图形,然后使用例如Postscript / PDF生成位图(例如PNG)。带有-density参数(http://www.imagemagick.org/script/command-line-options.php#density)的ImageMagick设置适当,以获得所需的分辨率。例如

convert -density 100 -quality 100 picture.pdf picture.png

假设picture.pdf是7in-by-7in(R默认值)将为您提供700x700 png图片。

使用这种方法,您不必担心图片的格式会有所不同,具体取决于使用哪个R设备(pdf() vs png())。