Как сохранить сюжет как изображение на диске из 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")
,