0

我想制作一系列高分辨率和低分辨率版本的图,或者使用两种不同的文件类型(.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与传说似乎并不笼统。

4

1 回答 1

0

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

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

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

使用这种方法,您不必担心图片的格式会因使用的 R 设备 ( pdf()vs png()) 而不同。

于 2015-10-21T13:49:41.543 回答