我試圖弄清楚如何使用downloadButton保存具有光澤的圖。包中的示例演示了downloadButton / downloadHandler保存.csv的方法。我將基于此舉一個(gè)可復(fù)制的示例。對(duì)于 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') )))對(duì)于 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()) } )})如果您正在回答此問(wèn)題,則可能對(duì)此很熟悉,但是要使其正常工作,請(qǐng)將以上內(nèi)容保存到單獨(dú)的腳本中(ui.R以及工作目錄中server.R的文件夾(foo)中)。要運(yùn)行閃亮的應(yīng)用程序,請(qǐng)運(yùn)行runApp("foo")。使用ggsave,我收到一條錯(cuò)誤消息,指示ggsave無(wú)法使用該filename功能(我認(rèn)為)。如果我使用標(biāo)準(zhǔn)的圖形設(shè)備(如下所示),則Download Plot可以正常工作,但不會(huì)寫(xiě)入圖形。任何使downloadHandler可以用于編寫(xiě)圖表的技巧都將受到贊賞。
3 回答

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