Как сохранить сюжет как изображение на диске из Viewer в RStudio?

Резюме: моя конечная цель - использовать rCharts и конкретно Highcharts как часть ReporteRs Рабочий процесс автоматизации отчетов PowerPoint. Одна из диаграмм, которую я хотел бы использовать, отображается как HTML на панели просмотра в Rstudio, и 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 и phantomjs, Если ваш ответ опирается на phantomjs Пожалуйста, предположите, что я понятия не имею, как использовать это. webshot это еще один пакет, который я нашел, который даже так любезен, чтобы включить install_phantomjs() функция, но из того, что я мог найти, это требует от вас превратить ваш вывод в Shiny объект первым.

Мой вопрос на самом деле является дубликатом этого, который не является дубликатом этого, потому что именно так можно встроить вывод html в Rmarkdown, а не сохранять его в виде файла на жестком диске.

Я также нашел этот вопрос без ответа, который также в основном тот же.

редактировать: как отметили @hrbrmstr и многие другие, радарные карты не всегда являются лучшими инструментами визуализации. Я считаю себя обязанным сделать один для этого отчета.

1 ответ

Решение

Ответ оказался в 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"),

Другие вопросы по тегам