【发布时间】:2022-01-05 15:16:18
【问题描述】:
在我的 Shiny 应用程序中,我制作了一个非常沉重的情节。当我想下载这个情节时,R首先在后台生成PNG文件,然后打开文件系统选择我要保存的位置。
问题是点击下载按钮后,情节创建需要一些时间,因此用户不知道它是否有效。
下面的例子:情节有点沉重,所以需要一些时间才能出现。等待它出现后再点击“下载”按钮。
library(shiny)
library(ggplot2)
foo <- data.frame(
x = sample(seq(1, 20, by = 0.01), 5*1e5, replace = TRUE),
y = sample(seq(1, 20, by = 0.01), 5*1e5, replace = TRUE)
)
ui <- fluidPage(
downloadButton('foo'),
plotOutput("test")
)
server <- function(input, output) {
output$test <- renderPlot(ggplot(foo, aes(x, y)) + geom_point())
output$foo = downloadHandler(
filename = 'test.png',
content = function(file) {
ggsave(file)
}
)
}
shinyApp(ui, server)
有没有办法反转这个过程,即首先让用户选择保存绘图的位置,然后在后台生成 PNG?我认为这将提供更好的用户体验。
【问题讨论】: