You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何在Shiny应用中捕获ECharts图例激活/停用事件?

在Shiny中捕获ECharts图例的激活/停用事件

当然可以在Shiny应用中捕获ECharts图例的激活/停用事件,核心是利用echarts4r包的e_on()函数监听ECharts原生的legendselectchanged事件,再在Shiny的server端读取事件返回的数据。

完整示例代码

library(shiny)
library(echarts4r)
library(tibble)

ui <- fluidPage(
  echarts4rOutput("pie_chart"),
  verbatimTextOutput("legend_status")
)

server <- function(input, output) {
  output$pie_chart <- renderEcharts4r({
    mtcars |> 
      head() |> 
      tibble::rownames_to_column("model") |> 
      e_charts(model) |> 
      e_pie(carb, legend = TRUE) |>  # 确保图例功能开启
      e_title("Pie chart") |> 
      e_on("legend_select_event", "legendselectchanged")  # 绑定图例选择事件并指定自定义ID
  })
  
  # 监听图例事件并实时输出状态
  output$legend_status <- renderPrint({
    req(input$legend_select_event)
    cat("当前图例激活状态:\n")
    print(input$legend_select_event$selected)
  })
}

shinyApp(ui, server)

关键说明

  • e_on("自定义事件ID", "legendselectchanged"):legendselectchanged是ECharts原生的图例选择事件,每次点击图例项(激活或停用)都会触发,自定义ID用于在Shiny中识别该事件。
  • input$自定义事件ID:在server端通过这个变量获取事件返回的数据,其中$selected字段是一个列表,键为图例名称,值为TRUE(激活状态)或FALSE(停用状态)。
  • 示例中用verbatimTextOutput实时展示状态变化,你可以根据业务需求修改逻辑,比如根据图例状态过滤数据、联动更新其他可视化组件等。

内容的提问来源于stack exchange,提问作者user26514262

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.20 11:42:04