gpt4 book ai didi

r - 如何从 RStudio 中的查看器将绘图保存为磁盘上的图像?

转载 作者:行者123 更新时间:2023-12-01 12:25:36 25 4
gpt4 key购买 nike

总结:我的最终目标是使用 rCharts,特别是 Highcharts,作为 ReporteRs PowerPoint 报告自动化工作流程的一部分。我想使用的图表之一在 Rstudio 的查看器 Pane 中呈现为 html,并且 addPlot(function() print(myChart)) 不会将其添加到 PowerPoint。作为解决方法,我决定尝试将 myChart 保存到磁盘,这样我就可以将它添加到 PowerPoint 中。

所以我的问题是,如何将 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 ,以及 many other potential solutions似乎依赖于 Javascript 和 phantomjs。如果您的答案依赖于 phantomjs,请假设我不知道如何使用它。 webshot 是我发现的另一个包,它甚至包括一个 install_phantomjs() 函数,但据我所知,它要求你将输出转换为Shiny 对象优先。

我的问题实际上是 this one 的重复,它不是 this one 的副本因为那是如何将 html 输出嵌入到 Rmarkdown 中,而不是将其作为文件保存在硬盘上。

我还找到了this unanswered question这也是基本相同的。

编辑:正如@hrbrmstr 和许多其他人所指出的,雷达图并不总是最好的可视化工具。我发现自己需要为这份报告做一份。

最佳答案

答案竟然在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

然后我可以使用 addImage(mydoc, "/tmp/out.png") 运行 ReporteRs 工作流。

关于r - 如何从 RStudio 中的查看器将绘图保存为磁盘上的图像?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40160125/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com