1

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 のエクスポート機能を使用すると、画面と紙に見栄えの良いグラフが表示されるため、可能であるに違いありません。しかし、ファイルを手動でエクスポートする必要がないように、これを成文化したいと考えています。

私はウェブを精査しましたが、これに対処するものを見つけることができませんでした。助けていただければ幸いです。

4

1 に答える 1

2

パッケージを使用してこれを試してみましdevEMFたが、警告がスローされますが、ここで作成した画像のように見えます。

あなたはただする必要がありますinstall.packages('devEMF')

require(devEMF)
emf('imPic.emf')
print(pp)
dev.off()
于 2013-07-28T08:30:33.170 に答える