3

概要: 私の最終的な目標はrCharts、特にをPowerPoint レポート自動化ワークフローHighchartsの一部として使用することです。ReporteRs使用したいグラフの 1 つは、Rstudio のビューアー ペインで html としてレンダリングされaddPlot(function() print(myChart))、PowerPoint には追加されません。回避策として、ディスクに保存してみることにしmyChartました。そこから、その方法で PowerPoint に追加できます。

だから私の質問は本当に、どうすれば自分のhtml画像をReporteRsワークフローに入れることができますか? ディスクに保存するか、読み取り可能にするReporteRsことで問題が解決します。

この質問は実際にはこれと同じですが、特にここ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()

そのエラーが発生します。

私はHighchartsドキュメント Javascriptや. あなたの答えが に依存している場合は、私がその使い方を知らないと仮定してください。私が見つけた別のパッケージは、関数を含めるほど親切ですが、私が見つけたものから、最初に出力をオブジェクトに変換する必要があります。 phantomjsphantomjswebshotinstall_phantomjs()Shiny

私の質問は実際には this one の複製です。これは this one複製ではありません。これは、html 出力をハード ドライブにファイルとして保存するのではなく、Rmarkdown に埋め込む方法だからです。

また、基本的に同じであるこの未回答の質問も見つけました。

編集: @hrbrmstr と他の多くの人が指摘しているように、レーダー チャートは常に最適な視覚化ツールとは限りません。このレポート用に作成する必要があると思います。

4

1 に答える 1

5

答えはwebshotパッケージにあることがわかりました。@hrbrmstr は次のコードを提供しました。これは、質問に投稿したコードの最後で実行されます。

# 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次にその写真が撮影され、 として保存されますpng

ReporteRsその後、を使用してワークフローを実行できますaddImage(mydoc, "/tmp/out.png")

于 2016-10-24T17:35:54.900 に答える