在 Shiny 中保存 PNG 图非 ggplot

Saving PNG plot non-ggplot in Shiny

我正在尝试在 Shiny 中下载非 ggplot 文件。我可以在应用程序中看到该图,但是当我单击 UI 中的 plotDownload 按钮时,它会下载一个空的 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")) })
)

谢谢。

您需要在 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()

        })    
  }
)