如何使用DownloadButton下载动态图数

Posted

技术标签:

【中文标题】如何使用DownloadButton下载动态图数【英文标题】:How to use DownloadButton to download dynamic number of plots 【发布时间】:2021-11-30 00:40:20 【问题描述】:

希望你一切都好。 我需要你的帮助。 我自己的闪亮服务器应用程序与此应用程序类似,我想在顶部添加一个下载按钮:

max_plots <- 5

ui <- fluidPage(

  headerPanel("Dynamic number of plots"),

  sidebarPanel(
    sliderInput("n", "Number of plots", value=1, min=1, max=5)
  ),

  mainPanel(
    uiOutput("plots")
  )
)

server <- function(input, output) 

  output$plots <- renderUI(
    plot_output_list <- lapply(1:input$n, function(i) 
      plotname <- paste("plot", i, sep="")
      plotOutput(plotname, height = 280, width = 250)
    )

    do.call(tagList, plot_output_list)
  )

  for (i in 1:max_plots) 
    local(
      my_i <- i
      plotname <- paste("plot", my_i, sep="")

      output[[plotname]] <- renderPlot(
        plot(1:my_i, 1:my_i,
             xlim = c(1, max_plots),
             ylim = c(1, max_plots),
             main = paste("1:", my_i, ".  n is ", input$n, sep = "")
        )
      )
    )
  


shinyApp(ui, server)

是否可以添加一个下载按钮来下载 pdf 中的 5 个图形?

谢谢:)

【问题讨论】:

【参考方案1】:

给你:)

max_plots <- 5

ui <- fluidPage(
  
  headerPanel("Dynamic number of plots"),
  
  sidebarPanel(
    sliderInput("n", "Number of plots", value=1, min=1, max=5),
    downloadButton("pdf")
  ),
  
  mainPanel(
    uiOutput("plots")
  )
)

server <- function(input, output) 
  
  output$plots <- renderUI(
    lapply(1:input$n, function(i) 
      plotOutput(paste0("plot", i), height = 280, width = 250)
    )
  )
  
  plot_lists <- reactiveValues()
  
  for(i in 1:max_plots) 
    local(
      my_i <- i
      plotname <- paste0("plot", my_i)
      output[[plotname]] <- renderPlot(
        plot(
          1:my_i, 1:my_i,
          xlim = c(1, max_plots),
          ylim = c(1, max_plots),
          main = paste("1:", my_i, ".  n is ", input$n, sep = "")
        )
        plot_lists[[as.character(my_i)]] <- recordPlot()
      )
    )
  
  output$pdf <- downloadHandler(
    filename = "my_plots.pdf",
    content = function(file) 
      pdf(file)
      sapply(rev(reactiveValuesToList(plot_lists)), print)
      dev.off()
    
  )


shinyApp(ui, server)


【讨论】:

您好 Ronak,非常感谢您的回答,它使我能够将其适应我自己的代码并且一切正常。 嗨@ss10,这是lz100回答你的问题而不是Ronak,xD。 Ronak 是帮助您改善问题的人。很高兴我的回答对您有所帮助。 嗨@Iz100,非常抱歉;谢谢你的回答。

以上是关于如何使用DownloadButton下载动态图数的主要内容,如果未能解决你的问题,请参考以下文章

plotly 图中的最大垂直子图数

如何保存在闪亮的应用程序中制作的图

从边列表计算创建的图数和每个图中的顶点数

c语言中,输入一组数如:12345678,从数尾开始,每三位插入一个逗号。

Excel的列数如何用数字表示?

要想实现超视距低延时图数传输,你还需要一款Mini Homer