如何使用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下载动态图数的主要内容,如果未能解决你的问题,请参考以下文章