下载闪亮图为PNG

问题描述 投票:0回答:1

我正在努力学习闪亮,并且正在开发一个简单的应用程序,它可以为您创建一个情节并让您下载它。这是代码:

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 文件,当我单击“保存”时,该文件甚至不会下载。

r shiny shinyapps
1个回答
0
投票

这是您更正后的服务器端代码:

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
文件。

希望这有帮助!

© www.soinside.com 2019 - 2024. All rights reserved.