R ggiraph - 运行 .R 文件时无图
R ggiraph - no plot when running .R file
如何在执行.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
进程在浏览器 window 中完成打开您的临时文件,然后 R
退出并自行清理。
请注意 R
在 Sys.sleep()
之后退出时仍会删除临时 index.html
文件,但 Firefox 已经在内存中有一个缓存。
编辑:另一种解决方案是将您的交互式绘图显式写到 .html 文件中,该文件在 R
退出后仍然存在。您可以通过将 ggiraph
的结果存储到一个变量然后将其传递给 htmlwidgets::saveWidget
:
myplot <- ggiraph(code = print(gg1))
htmlwidgets::saveWidget( myplot, "test.html" )
browseURL( "test.html" )
如何在执行.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
进程在浏览器 window 中完成打开您的临时文件,然后 R
退出并自行清理。
请注意 R
在 Sys.sleep()
之后退出时仍会删除临时 index.html
文件,但 Firefox 已经在内存中有一个缓存。
编辑:另一种解决方案是将您的交互式绘图显式写到 .html 文件中,该文件在 R
退出后仍然存在。您可以通过将 ggiraph
的结果存储到一个变量然后将其传递给 htmlwidgets::saveWidget
:
myplot <- ggiraph(code = print(gg1))
htmlwidgets::saveWidget( myplot, "test.html" )
browseURL( "test.html" )