web-dev-qa-db-ja.com

R:現在アクティブなRプロットをPowerPoint / Word / LibreOfficeにエクスポートする関数

現在、私はいつものように、優れたReporteRsパッケージを使用してベクター形式でRグラフをPowerPointにエクスポートしています。

_library(ReporteRs)
myplot = function() print(qplot(Sepal.Length, Petal.Length, data = iris, color = Species, size = Petal.Width, alpha = I(0.7)))
doc = pptx()
doc = addSlide(doc, slide.layout = "Blank") 
doc = addPlot( doc, myplot, vector.graphic = TRUE, fontname="Arial",
               offx = 0.1*dim(doc)$slide.dim["width"], offy = 0.05*dim(doc)$slide.dim["height"], 
               width = 0.8*dim(doc)$slide.dim["width"], height = 0.9*dim(doc)$slide.dim["height"])
writeDoc( doc, "plot.pptx") 
_

enter image description here

このワークフローで不便なのは、プロットコマンドを関数にラップする必要があることです(latticeまたは_ggplot2_プロットの場合はprint()を使用するか、単にreturn(plot())ベースRプロットの場合)、オフセットとサイズを手動で指定する必要がないのが普通です(通常、ページのほぼ中央にある、中央のグラフをスライドで取得することを好みます)。代わりに、最初にプロット(ベースRプロット、latticeプロット、または_ggplot2_プロット)を作成し、次に関数を定義する_export2PPT_を定義することが不可能かどうか疑問に思いました関数として現在のグラフィックスデバイスの出力をReporteRsaddPlotに渡し、プロットをPowerPointとしてエクスポートします(中央揃えで適切にスケーリングされます)。関数_dev.copy2pdf_に類似しています。 PDFへのエクスポートと同じように機能しますか?

そして、このような関数を作成したら、おそらく grDevicesソースコードを変更 関数 windows()とsavePlot() でさえ、追加のコマンドファイルを作成できます。 ..windows()デバイスを使用していた場合、PowerPointとして保存しますか?それとも、これはRコアの人々が行うことですか?

特に教室で使用する場合、MS Office/LibreOfficeの優位性を考えると、これは非常に便利だと思います。 (PowerPointはPDFよりもはるかに簡単に編集できるため、Rグラフの最終レイアウトを簡単に変更でき、ベクトル出力は少なくともPDFと同等であり、さらに透明度も完全にサポートされています-PDF Adob​​e Illustratorを使用しない限り、Inkscapeへのインポートは少しバグが多いことがわかります)

これを行う方法を知っている人はいますか?

編集:その間、私は解決策を見つけ、現在アクティブなRプロットをPowerPointにCRANのパッケージにエクスポートするためのエクスポート関数をラップしました https://cran.r-project.org/web/packagesを参照) /export/index.html および https://github.com/tomwenseleers/export デモ用。 ReporteRが廃止されたため、パッケージは現在、オフィサーパッケージをバックエンドとして使用しています...

20
Tom Wenseleers

現在アクティブなグラフィックデバイスのRプロットをPowerPointまたはWord(またはLibreOffice Impress/Writer)に編集可能な(DrawingML)ベクトル形式でワンライナーとしてエクスポートできる新しいCRANパッケージexportを作成しました、透明性などを完全にサポートしている https://cran.r-project.org/web/packages/export/index.html を参照してください https:// github .com/tomwenseleers/export

例えば:

install.packages("export")
library(export)

latticeプロットをエクスポートする例:

library(effects)
fit=lm(prestige ~ type + income*education, data=Prestige)
plot(Effect(c("income", "education"), fit),multiline=T, ci.style="bands")
graph2ppt(file="effect plot.pptx", width=7, height=5)

enter image description here

PPTを右クリックすると、ベクトル形式でうまく表示されます:

enter image description here

WordまたはPPT=これらのグラフも(ベクター形式)に完全にエクスポートされますPDF File ... Save as ... PDFを使用してPDFで直接編集するよりもレイアウトを簡単に微調整できる。

R CoreまたはRStudioの人々がこの機能を含めたい場合は、実行してください。Officeスイートの優位性と広範な使用を考えると、教室での使用には非常に便利です。

32
Tom Wenseleers