我有一个R Shiny文档,其中用户定义了他们为“PlotOutput”区域中显示的ggplot图选择的数据和参数、颜色等。
我想添加一个按钮,该按钮将当前在绘图区域中的图像以PNG格式保存到我已经定义的文件夹中,并使用我选择的命名格式。
也就是说,我希望文件的名称类似于“IMG_YYMMDD_HHMMSS”,其中日期和时间信息来自Sys.time()调用。
我看到的文档中唯一类似的是downloadButton小部件,但我无法让它工作,即使我可以,它也允许用户定义输出图像文件的名称和目的地,这不是我想要的。
如果我可以把ggplot对象传递给ggsave函数,就像编写代码生成这样的图像一样,那么文件名和文件路径就可以用这种方式定义,有什么方法可以做到这一点吗?
干杯
EDIT:看起来有一种方法可以使用下载处理程序来保存我选择的默认名称。出于我的目的,它看起来很容易从下面的例子中更改:
output$downloadData <- downloadHandler(
filename = function() {
paste(input$downloadData, " ",Sys.Date(),".csv",sep="")
},
content = function(file) {
write.csv(myout()$dataframe1,file,row.names=F)
}
)
但我仍然不清楚如何使用它,是否有一种方法可以将我选择的文件夹设置为默认文件夹。如果可以的话,那就太好了。
- 我不希望这样做的原因是它应该非常快。它应该花10秒来产生用户想要的图像。如果他们需要花15秒用随机的名字将图像保存到某个随机的目的地,那么这就失去了意义。我的想法是它应该只是姓氏的字母顺序,日期和时间适用于此。
2条答案
按热度按时间velaa5lx1#
使用下面的应用程序,用户在单击按钮后选择一个文件夹,图形将以您在应用程序中指定的名称保存在该文件夹中。它使用了良好的旧包rChoiceDialogs。您也可以使用shinyFiles包。
chhkpiq42#
我不能做我想做的每件事,但这个答案足以让我足够接近。
技巧是将ggplot对象创建为React式数据集
1.传递给中的渲染器
以及2.在中传递到下载处理程序
Saving ggplot from Shiny gives blank png file
这保存了一个很好的高分辨率图像,因为它是默认的,但是你可以在ggsave中修改宽度和高度。