在Shiny中保存PNG图非ggplot

时间:2015-04-17 11:04:53

标签: r download png shiny

我正在尝试在Shiny中下载非ggplot文件。我可以在应用程序中看到该情节,但是当我点击UI中的plotDownload按钮时,它会下载一个EMPTY png文件。有人可以知道我做错了什么?

server.R

library(shiny)
shinyServer(
   function(input, output) {

      plotInput <- reactive({
        plot(rnorm(sample(100:1000,1)))
      })

      output$pngPlot <- renderPlot({ plotInput() })


      output$downloadPlot <- downloadHandler(
        filename = "myPlot.png",
        content = function(file){
          png(file, width=800, res=100)
          print(plotInput())
          dev.off()
        })    
  }
)

ui.R

require(shiny)
pageWithSidebar(
  headerPanel("Output to png"),
  sidebarPanel(
    downloadButton('downloadPlot')
  ),
  mainPanel({ mainPanel(plotOutput("pngPlot")) })
)

Thnks。

1 个答案:

答案 0 :(得分:2)

您需要在downloadHandler()中重新绘制:

library(shiny)
shinyServer(
  function(input, output) {

    plotInput <- reactive({
      plot(rnorm(sample(100:1000,1)))
    })

    output$pngPlot <- renderPlot({ plotInput() })


    output$downloadPlot <- downloadHandler(
      filename = "myPlot.png",
      content = function(file){
        png(file, width=800, res=100)
        plot(rnorm(sample(100:1000,1)))
        dev.off()

        })    
  }
)