【问题标题】:How to create an 'Action button' to reset the selection in ECharts2Shiny bar chart如何创建“操作按钮”以重置 ECharts2Shiny 条形图中的选择
【发布时间】:2025-12-19 05:50:06
【问题描述】:

我想将选择重置为条形图。这是我的代码:

library(shiny)
library(shinydashboard)
library(ECharts2Shiny)

demo <- data.frame(c(5,0,0,1,20,25,14,1,53),
               c(1,1,1,2,12,22,5,1,25),
               c(6,0,0,3,26,38,19,2,65),
               c(0,0,0,0,5,3,0,0,6),
               c(0,1,1,0,1,6,0,0,7),
               c(6,0,1,3,32,47,19,2,78),
               c(2,0,0,1,8,13,10,1,33),
               c(0,0,0,0,0,9,2,0,4),
               c(1,0,0,1,6,4,6,0,23))
names(demo) <- c("M", "F", "O", "B", "C", "Re", "Vi", "Ac", "Co")
row.names(demo) <- c("Az","Bh", "Bi", "Ch", "Ha", "Ka", "N.G", "Ra", "Su") 

ui <- mainPanel(tabPanel(h5("Block wise"), loadEChartsLibrary(), 
tags$div(id="demo1", style="width:100%;height:500px;"), deliverChart(div_id= 
"demo1"),downloadButton("downloadData", "Download Data")))
server <- shinyServer(function(input,output){
             renderBarChart(div_id = "demo1", grid_left = '1%', direction = 
"vertical", data = demo)})
shinyApp(ui,server)

如何创建一个重置按钮来取消选择属性? 我还需要帮助以 excel csv 格式下载数据。下载数据按钮会弹出一个窗口,要求保存文件,但不允许我们选择“文件名”输入栏下方的“另存为类型”。

提前致谢

【问题讨论】:

    标签: r shiny


    【解决方案1】:

    重置绘图可以通过shinyjs来执行js代码:location.reload();

    downloadButton 必须具有服务器组件才能以给定的文件格式保存数据。

    library(shiny)
    library(shinydashboard)
    library(ECharts2Shiny)
    library(shinyjs)
    
    demo <- data.frame(c(5,0,0,1,20,25,14,1,53),
                       c(1,1,1,2,12,22,5,1,25),
                       c(6,0,0,3,26,38,19,2,65),
                       c(0,0,0,0,5,3,0,0,6),
                       c(0,1,1,0,1,6,0,0,7),
                       c(6,0,1,3,32,47,19,2,78),
                       c(2,0,0,1,8,13,10,1,33),
                       c(0,0,0,0,0,9,2,0,4),
                       c(1,0,0,1,6,4,6,0,23))
    names(demo) <- c("M", "F", "O", "B", "C", "Re", "Vi", "Ac", "Co")
    row.names(demo) <- c("Az","Bh", "Bi", "Ch", "Ha", "Ka", "N.G", "Ra", "Su") 
    
    ui <- mainPanel( shinyjs::useShinyjs(),
      tabPanel(h5("Block wise"), loadEChartsLibrary(), 
              actionButton("reset","reset plot"),
              tags$div(id="demo1", style="width:100%;height:500px;"), 
              deliverChart(div_id="demo1"),
              downloadButton("downloadData", "Download Data")))
    server <- shinyServer(function(input,output){
      observeEvent(input$reset,{
        shinyjs::runjs("location.reload();")
      })
    
      output$downloadData <- downloadHandler(
      filename = function() {
        paste('data-', Sys.Date(), '.csv', sep='')
      },
      content = function(con) {
        write.csv(demo, con)
      }
    )
    
      renderBarChart(div_id = "demo1", grid_left = '1%', direction = 
                       "vertical", data = demo)})
    shinyApp(ui,server)
    

    【讨论】:

    • 但下载为 .csv 选项没有显示在那里。保存默认文件类型后,文件不会保存为 csv 类型。
    • 我更改了 UI 代码,在执行“重置绘图”时,它会将我带到 tabpanel 的第一个选项卡,而不是重置绘图。我将再次用标题质疑这种情况:“在标签面板中重置绘图”