2016-10-20 4 views
2

요약 : 궁극적 인 목표는 ReporteRs PowerPoint 보고서 자동화 워크 플로의 일환으로 rCharts, 특히 Highcharts을 사용하는 것입니다. 내가 사용하고자하는 차트 중 하나는 Rstudio의 Viewer pane에서 html로 렌더링되고 addPlot(function() print(myChart))은 PowerPoint에 추가하지 않습니다. 이 문제를 해결하기 위해 디스크에 myChart을 저장하기로 결정했습니다. 그 곳에서 바로 PowerPoint에 추가 할 수 있습니다.RStudio의 뷰어에서 플로트를 이미지로 디스크에 저장하는 방법은 무엇입니까?

제 질문은 실제로 입니다. 내 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() 

을 시도하는 경우.

나는 자바 스크립트와 phantomjs에 의존하는 것 manyotherpotentialsolutions뿐만 아니라, Highcharts documentation을 검토 한 결과. 귀하의 답변이 phantomjs에 의존하는 경우, 사용 방법을 모른다고 가정하십시오. webshotinstall_phantomjs() 함수를 포함하도록 매우 친절한 패키지를 찾았지만 찾을 수있는 것은 출력을 Shiny 개체로 먼저 변환해야합니다.

내 질문은 정말 this one의 중복입니다 하지 즉, Rmarkdown의 HTML 출력을 내장 하드 드라이브의 파일로 저장하지 않는 방법이기 때문에 this one의 중복.

나는 또한 기본적으로 동일합니다 this unanswered question을 발견했습니다.

편집 : @hrbrmstr 및 기타 여러 점에서 언급했듯이 레이더 차트가 항상 최상의 시각화 도구는 아닙니다. 이 보고서를 작성해야한다는 것을 알았습니다.

+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 패키지로 밝혀졌습니다. @hrbrmstr 내가 질문에 게시 코드의 끝에서 실행된다 다음 코드 제공 : 이것은 다음 html과 폴더에 플롯을 저장하고

# 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) 

그것의 사진을 걸립니다 png으로 저장됩니다.

addImage(mydoc, "/tmp/out.png")을 사용하여 ReporteRs 워크 플로를 실행할 수 있습니다.

관련 문제