我正在尝试在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。
答案 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()
})
}
)