我正在努力学习闪亮,并且正在开发一个简单的应用程序,它可以为您创建一个情节并让您下载它。这是代码:
library(shiny)
library(shinycssloaders)
library(ambient)
ui <- fluidPage(
sliderInput("min","Grid Minimum",min = 5, max = 15,value = 10),
sliderInput("max","Grid Maximum",min = 5, max = 15,value = 10),
sliderInput("lenght","Grid Breaks",min = 100, max = 1000, step = 100, value = 500),
plotOutput("worleyplot"),
downloadButton("dl","Download Pic")
)
server <- function(input,output){
preview <- function(){
grid <- long_grid(seq(input$min,input$max,length.out = input$lenght),
seq(input$min,input$max,length.out = input$lenght))
grid$noise <- gen_worley(grid$x,grid$y,value = 'distance')
plot(grid,noise)
}
output$worleyplot <- renderPlot(preview())
output$dl <- downloadHandler(
filename <- "plot.png",
content <- function(file){
png(file)
plotInput()
dev.off
}
)
}
shinyApp(ui, server)
但是当我单击下载按钮时,它不会提示我保存 png 文件,而是显示一个 htm 文件,当我单击“保存”时,该文件甚至不会下载。
这是您更正后的服务器端代码:
server <- function(input,output){
preview <- function(){
grid <- long_grid(seq(input$min,input$max,length.out = input$lenght),
seq(input$min,input$max,length.out = input$lenght))
grid$noise <- gen_worley(grid$x,grid$y,value = 'distance')
plot(grid,noise)
}
output$worleyplot <- renderPlot(preview())
output$dl <- downloadHandler(
filename = "plot.png",
content = function(file){
png(file)
preview()
dev.off()
}
)
}
首先,您将一个不存在的函数
plotInput()
传递给了downloadHandler(content =)
。我将其替换为正确生成绘图的函数,preview()
。
其次,
dev.off()
缺少括号。通过这些更正,您可以生成绘图并将其下载为 .png
文件。
希望这有帮助!