R Shiny中如何实现下载ggplot2绘图时弹出路径选择窗口?
解决ggplot2绘图下载PDF时弹出保存位置窗口的问题
你的问题出在downloadHandler的content函数里——你直接硬编码了ggsave的文件名,没有使用Shiny传递给你的file参数,导致文件直接存到了工作目录,而没有触发浏览器的保存对话框。
下面是修正后的代码:
output$export = downloadHandler( filename = function() { "plots.pdf" }, content = function(file) { # 这里使用downloadHandler传递的file参数,而非硬编码文件名 ggsave(file = file, width = 11, height = 8.5) } )
为什么这样修改有效?
downloadHandler的content函数中的file参数是Shiny自动生成的临时文件路径,当你把这个路径传给ggsave时,Shiny会将这个临时文件作为下载内容推送给浏览器,浏览器随即弹出保存对话框,让你选择保存位置和文件名。- 你原来的代码直接写
ggsave(file="Analyse.pdf"),相当于让R在当前工作目录生成文件,完全绕开了Shiny的下载机制,自然不会弹出对话框。
另外补充一点:如果你的ggplot对象不是全局变量,记得在content函数里生成或调用目标绘图对象,比如:
output$export = downloadHandler( filename = function() { "plots.pdf" }, content = function(file) { # 示例:生成你的绘图对象p p = ggplot(mtcars, aes(wt, mpg)) + geom_point() ggsave(file = file, plot = p, width = 11, height = 8.5) } )
这样就能确保下载的是你想要的目标绘图啦。
内容的提问来源于stack exchange,提问作者Tomcatn00b
相关产品推荐
相关产品推荐

