【发布时间】:2013-01-26 10:51:34
【问题描述】:
我正在尝试弄清楚如何使用 downloadButton 来保存带有闪亮的绘图。包中的示例演示了 downloadButton/downloadHandler 以保存 .csv。我将在此基础上制作一个可重现的示例。
对于ui.R
shinyUI(pageWithSidebar(
headerPanel('Downloading Data'),
sidebarPanel(
selectInput("dataset", "Choose a dataset:",
choices = c("rock", "pressure", "cars")),
downloadButton('downloadData', 'Download Data'),
downloadButton('downloadPlot', 'Download Plot')
),
mainPanel(
plotOutput('plot')
)
))
对于server.R
library(ggplot2)
shinyServer(function(input, output) {
datasetInput <- reactive({
switch(input$dataset,
"rock" = rock,
"pressure" = pressure,
"cars" = cars)
})
plotInput <- reactive({
df <- datasetInput()
p <-ggplot(df, aes_string(x=names(df)[1], y=names(df)[2])) +
geom_point()
})
output$plot <- renderPlot({
print(plotInput())
})
output$downloadData <- downloadHandler(
filename = function() { paste(input$dataset, '.csv', sep='') },
content = function(file) {
write.csv(datatasetInput(), file)
}
)
output$downloadPlot <- downloadHandler(
filename = function() { paste(input$dataset, '.png', sep='') },
content = function(file) {
ggsave(file,plotInput())
}
)
})
如果您正在回答这个问题,您可能对此很熟悉,但要使其正常工作,请将上述内容保存到单独的脚本(ui.R 和 server.R 到工作目录中的文件夹 (foo) 中. 要运行闪亮的应用程序,请运行runApp("foo")。
使用ggsave,我收到一条错误消息,指出ggsave 不能使用filename 函数(我认为)。如果我使用标准图形设备(如下所示),Download Plot 可以正常工作,但不会写入图形。
任何让 downloadHandler 工作以编写情节的提示将不胜感激。
【问题讨论】: