高解像度バージョンと低解像度バージョンの両方で一連のプロットを生成するか、2 つの異なるファイル タイプ (.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、凡例が正しく表示されなかったので、プロット領域外に対するこの解決策伝説は一般的ではないようです。