2016-10-20 16 views
2

要約:ReporteRs PowerPointレポート自動化ワークフローの一環として、rCharts、具体的にはHighchartsを使用することを最終的に目標しています。私が使用したいグラフの1つは、RstudioのViewerペインでhtmlとしてレンダリングされ、addPlot(function() print(myChart))はPowerPointに追加されません。回避策として、私はmyChartをディスクに保存しようと決めました。そこから、その方法でPowerPointに追加するだけでした。RStudioのViewerからディスク上の画像としてプロットを保存する方法は?

私の質問は本当にです。私のReporteRsワークフローに自分のhtmlイメージをどうやって取得できますか?どちらかをディスクに保存するか、それをReporteRsで読めるようにすることで問題は解決します。

この質問は本当にthis oneと同じですが、私は、具体的例はhereを見つけ、rChartsを使用しています:だから

#if the packages are not already installed 
install.packages('devtools') 
require(devtools) 
install_github('rCharts', 'ramnathv') 

#code creates a radar chart using Highcharts 
library(rCharts) 
#create dummy dataframe with number ranging from 0 to 1 
df<-data.frame(id=c("a","b","c","d","e"),val1=runif(5,0,1),val2=runif(5,0,1)) 
#muliply number by 100 to get percentage 
df[,-1]<-df[,-1]*100 

myChart <- Highcharts$new() 
myChart$chart(polar = TRUE, type = "line",height=500) 
myChart$xAxis(categories=df$id, tickmarkPlacement= 'on', lineWidth= 0) 
myChart$yAxis(gridLineInterpolation= 'circle', lineWidth= 0, min= 0,max=100,endOnTick=T,tickInterval=10) 
myChart$series(data = df[,"val1"],name = "Series 1", pointPlacement="on") 
myChart$series(data = df[,"val2"],name = "Series 2", pointPlacement="on") 
myChart 

私はそのエラーを取得する

> png(filename="~/Documents/name.png") 
> plot(myChart) 
Error in as.double(y) : 
    cannot coerce type 'S4' to vector of type 'double' 
> dev.off() 

をしようとした場合。

私は、Javascriptとphantomjsに頼るように見えるmanyotherpotentialsolutionsとしてだけでなく、Highcharts documentationに見てきました。あなたの答えがphantomjsに依存している場合、私はそれをどのように使用するかわかりません。 webshotは、install_phantomjs()関数をインクルードするように親切であることがわかった別のパッケージですが、私が見つけたものから、出力をShinyオブジェクトにする必要があります。

私の質問は、それは、ハードドライブ上のファイルとして保存し、RmarkdownでHTML出力をしませ埋め込む方法であるため、this oneの重複されていない、本当にthis oneの複製です。

また、基本的に同じthis unanswered questionが見つかりました。

編集:@hrbrmstrと他のスコアで指摘されているように、レーダーチャートは常に最適な視覚化ツールとは限りません。私は自分自身がこのレポートのために1つを作ることを要求されることがわかった

+0

'webshot'パッケージを使用してください。それをどのように行うのかの例がありますが、それはかなり簡単です: 'myChart $ save("/tmp/rcharts.html "); webshot :: webshot( "/ tmp/rcharts.html"、ファイル= "/ tmp/out.png"、遅延= 2) 'しかし、 'radarchart'パッケージを使うだけではどうですか? – hrbrmstr

+0

'webshot'は' phantomjs'を使います。私はどんな良いものに見える 'radarchart'の出力も見ませんでした。私はちょうど 'ggradar'で持っていたバグが対処されたことを知りましたので、私は戻ってそのパッケージを試してみるかもしれません。 – BLT

+0

はい、それはphantomjsを使用し、実際には 'install_phantomjs()'関数を持っています(ヘルプページを読む必要があります)。限り、レーダーチャートは(彼らは通常、恐ろしい視覚化の選択肢です) 'fsmb :: radarchart()' [[悪い仕事をしない]](https://www.dropbox.com/s/agmc0peh2xywky9/Picture1.png ?dl = 1)、rCharts(つまり、この投稿が生成するもの)よりも無限に優れている(視覚的に魅力的です)が、IMOの方がより良い選択肢があります。 – hrbrmstr

答えて

1

答えはwebshotパッケージにあることが判明しました。 、

# If necessary 
install.packages("webshot") 
library(webshot) 
install_phantomjs() 

# Main code 
myChart$save("/tmp/rcharts.html") 
webshot::webshot("/tmp/rcharts.html", file="/tmp/out.png", delay=2) 

これはhtmlとしてフォルダにプロットを保存し、その後、それの写真をとる:@hrbrmstr、私は疑問に掲載のコードの最後に実行されるだろう次のコードを、提供しましたpngとして保存されます。

私はその後addImage(mydoc, "/tmp/out.png")を使用してReporteRsワークフローを実行することができます。

関連する問題