2016-10-20 7 views
2

Реферат: моя конечная цель - использовать rCharts, и в частности Highcharts, как часть рабочего процесса автоматизации отчетов PowerPoint ReporteRs. Одна из диаграмм, которые я хотел бы использовать, отображается как html в панели Viewer в Rstudio, а addPlot(function() print(myChart)) не добавляет ее в PowerPoint. В качестве обходного решения я решил попытаться сохранить myChart на диск, откуда я мог бы просто добавить его в PowerPoint таким образом.Как сохранить сюжет как изображение на диске из Viewer в RStudio?

Так что мой вопрос действительно, Как мне получить изображение html в рабочий процесс ReporteRs? Либо получение его на диск, либо получение его для чтения на ReporteRs решит мою проблему.

Этот вопрос на самом деле же, как this one, но я использую rCharts, в частности, пример найден here:

#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 documentation, а также manyotherpotentialsolutions что похоже полагаться на Javascript и phantomjs. Если ваш ответ зависит от phantomjs, пожалуйста, предположите, что я понятия не имею, как его использовать. webshot - это еще один пакет, который был так любезен, что я включил функцию install_phantomjs(), но из того, что я мог найти, требуется сначала включить ваш вывод в объект Shiny.

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

Я также нашел this unanswered question, который также в основном такой же.

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

+0

Используйте пакет 'webshot'. есть примеры того, как это сделать на SO, но это довольно просто: 'myChart $ save ("/tmp/rcharts.html "); webshot :: webshot ("/ tmp/rcharts.html", file = "/ tmp/out.png", delay = 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. @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").

 Смежные вопросы

  • Нет связанных вопросов^_^