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