R Ggiraph-运行.r文件时无图



执行.r文件时如何获得图形?文件(test.r(看起来像这样:

library(ggplot2)
library(ggiraph)
gg <- ggplot(data = mtcars, aes(x = mpg, y = wt, color = factor(cyl)))
gg1 <-  gg + geom_point_interactive(aes(tooltip = gear), size = 5)
ggiraph(code = print(gg1))

我正在使用此命令运行它:

R < test.R --no-save

但是什么也没有发生。如果我只是从命令行中运行R并输入逐行的代码Firefox打开,并显示了一个非常不错的图形,则显示了所需的鼠标折叠标签。

R version 3.2.3 (2015-12-10)
x86_64-pc-linux-gnu

R生成临时.html文件,然后产生gvfs-open进程以查看该文件(又打开Firefox(。当您从命令行中运行脚本时,R退出并清理其临时文件,然后Firefox进程有机会完全加载。您可以通过执行

来看到这一点
$ R -q --interactive < test.R
> library(ggplot2)
> library(ggiraph)
> gg <- ggplot(data = mtcars, aes(x = mpg, y = wt, color = factor(cyl)))
> gg1 <-  gg + geom_point_interactive(aes(tooltip = gear), size = 5)
> ggiraph(code = print(gg1))
Save workspace image? [y/n/c]: 
gvfs-open: /tmp/RtmpPxtiZi/viewhtml3814550ff070/index.html: error opening location:
Error when getting information for file '/tmp/RtmpPxtiZi/viewhtml3814550ff070/index.html': No such file or directory

一个简单的修复是在脚本末尾添加Sys.sleep(5)。这将停止R几秒钟,允许gvfs-open进程在浏览器窗口中完成您的临时文件,然后在R退出并自行清理之前。

请注意,RSys.sleep()之后退出时仍会删除临时index.html文件,但是Firefox已经在内存中有一个缓存。

编辑:一种替代解决方案是将您的交互式绘图明确地写入R退出后持续存在的.html文件。您可以通过将ggiraph的结果存储到变量中,然后将其传递给htmlwidgets::saveWidget

myplot <- ggiraph(code = print(gg1))
htmlwidgets::saveWidget( myplot, "test.html" )
browseURL( "test.html" )

相关内容

  • 没有找到相关文章

最新更新