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
退出并自行清理。
请注意,在 之后退出时R
仍会删除临时文件,但 Firefox 将已经在内存中缓存。index.html
Sys.sleep()
编辑:另一种解决方案是将交互式绘图显式写入退出后仍然存在的 .html 文件R
。您可以通过将结果存储ggiraph
到变量然后将其传递给htmlwidgets::saveWidget
:
myplot <- ggiraph(code = print(gg1))
htmlwidgets::saveWidget( myplot, "test.html" )
browseURL( "test.html" )