2015-09-29 60 views
0

我想要生成一系列高分辨率和低分辨率版本的圖表,或者使用兩種不同的文件類型(.png和.eps)進行不同的表述。我想知道最好/最不重要的方式來做到這一點。我在sna中使用gplot函數,並且繪圖在繪圖區域外有一個自定義圖例。我寫了這樣一個功能:在繪製時創建多個文件類型

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類似的函數來重現問題時,我無法讓圖例正確顯示,因此這種解決方案適用於外部情節區傳奇似乎並不普遍。

回答

0

我建議只在R的Postscript/PDF中生成圖形,然後使用例如PostScript/PDF生成位圖(例如PNG)。 ImageMagick與-density參數(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()png())。