- 创建带有radioButtons和actionButton的Shiny应用程序:
library(shiny)
ui <- fluidPage(
radioButtons("plot_type", "选择绘图类型:",
choices = list("散点图" = "scatter", "线形图" = "line")),
actionButton("download_btn", "下载图形"),
plotOutput("plot")
)
server <- function(input, output) {
output$plot <- renderPlot({
if(input$plot_type == "scatter") {
plot(iris$Sepal.Length, iris$Sepal.Width)
} else if(input$plot_type == "line") {
plot(iris$Petal.Length, iris$Petal.Width, type = "l")
}
})
observeEvent(input$download_btn, {
# 代码将在这里添加
})
}
shinyApp(ui, server)
- 为下载按钮添加响应事件:
observeEvent(input$download_btn, {
if(input$plot_type == "scatter") {
png("scatter_plot.png")
plot(iris$Sepal.Length, iris$Sepal.Width)
dev.off()
} else if(input$plot_type == "line") {
png("line_plot.png")
plot(iris$Petal.Length, iris$Petal.Width, type = "l")
dev.off()
}
file <- if(input$plot_type == "scatter") "scatter_plot.png" else "line_plot.png"
downloadHandler(
filename = file,
content = function(file) {
file.copy(file, getwd())
}
)
})
此代码加入了一个新的侦听器,该侦听器在点击download_btn按钮时应用程序将响应事件。侦听器创建一个png图像(scatter_plot.png或line_plot.png),具体取决于用户选择的绘图类型,然后使用downloadHandler()函数将其下载到本地计算机。