我試圖弄清楚如何使用downloadButton保存具有光澤的圖。包中的示例演示了downloadButton / downloadHandler保存.csv的方法。我將基于此舉一個可復制的示例。對于 ui.RshinyUI(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.Rlibrary(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可以用于編寫圖表的技巧都將受到贊賞。
3 回答

慕慕森
TA貢獻1856條經驗 獲得超17個贊
我沒有設法使其與一起使用ggsave,但是通過標準調用png()它似乎還可以。
我只更改了文件的output$downloadPlot一部分server.R:
output$downloadPlot <- downloadHandler(
filename = function() { paste(input$dataset, '.png', sep='') },
content = function(file) {
png(file)
print(plotInput())
dev.off()
})
請注意,我在使用0.3版本的Shiny時遇到了一些問題,但是它可以與Github的最新版本一起使用:
library(devtools)
install_github("shiny","rstudio")
- 3 回答
- 0 關注
- 593 瀏覽
添加回答
舉報
0/150
提交
取消