如何在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
相关产品推荐
相关产品推荐

