R からのプロットを EMF 形式 (Windows メタファイル形式) として保存する必要があります。これにより、グラフが Microsoft Word の画面と紙で見栄えがよくなります。他のオプション (PNG、postscript など) は両方でうまく機能しません。PNG
デバイスは貧弱な解像度プロットを生成します。パラメータをいじるとres
グラフ要素が爆発し、これを軽減する方法を明確に説明するものは何も見つかりません。印刷出力の使用postscript
はかなり良いです。しかし、Word の EPS フィルターが無効になっているため、EPS ファイルが画面に表示されません。画面上でも紙上でもうまく機能するものが必要です。win.metafile
両方を行う唯一のものです。
これがひねりです。gridExtra
プロットのレイアウトをカスタマイズするために使用しています。私が収集したものから、これは複数のプロットを 1 つのデバイスに書き込んでいることを意味します (これを EMF にエクスポートしたい)。しかし、win.metafile
ファイルごとに 1 つのプロットしか許可されないことはわかっています。から?win.metafile
:
win.metafile の場合、ファイルごとに 1 つのプロットのみが許可されます
したがって、以下は機能しません。
library(ggplot2)
library(gridExtra)
# g_legend pinched from Hadley:
# https://github.com/hadley/ggplot2/wiki/Share-a-legend-between-two-ggplot2-graphs
g_legend <- function(a.gplot)
{
tmp <- ggplot_gtable(ggplot_build(a.gplot))
leg <- which(sapply(tmp$grobs, function(x) x$name) == "guide-box")
legend <- tmp$grobs[[leg]]
return(legend)
}
win.metafile(file='test.emf', width=6, height=4)
p <- ggplot(mtcars, aes(x=cyl, y=mpg, colour=factor(gear)))
pl <- p + geom_point()
legend <- g_legend(pl)
lwidth <- sum(legend$width)
pp <- arrangeGrob(pl + theme(legend.position="none"), legend)
pp
dev.off()
実際、次のエラーメッセージが表示されます。
grid.newpage() のエラー: メタファイル 'test.emf' を作成できませんでした
Ok。だからここに私の質問があります:arrangeGrob出力から1つのプロットのみを表示するにはどうすればよいwin.metafile
ですか?その出力を何かに詰め込んで、 1 つのプロットを取得できますか? RStudio のエクスポート機能を使用すると、画面と紙に見栄えの良いグラフが表示されるため、可能であるに違いありません。しかし、ファイルを手動でエクスポートする必要がないように、これを成文化したいと考えています。
私はウェブを精査しましたが、これに対処するものを見つけることができませんでした。助けていただければ幸いです。