如何在 Shiny App 中使用 echarts4r 回调

How to use Callbacks with echarts4r in a Shiny App

我希望在服务器的 echarts4r 对象中检索用户选择的信息,用于服务器端逻辑。我希望使用 id_clicked_dataid_mouseover_data 等回调 https://echarts4r.john-coene.com/reference/echarts4r-shiny.html.

在玩具应用程序(下方)中,我希望通过 outpt_map_country 对象 return 将地图上单击的国家/地区的值 return 显示到屏幕上。非常感谢任何帮助。

我试过 input$outpt_map_country_clicked_data 的变体,但解决方案暗示我。

library(shiny)
library(echarts4r)
library(countrycode)
library(dplyr)


ui <- fluidPage(
  echarts4rOutput('outpt_map'),
  verbatimTextOutput('outpt_map_country'),
  tableOutput('out_cns')
)


cns <- data.frame(
  country = countrycode::codelist$country.name.en
) %>% 
  mutate(value   = round(runif(length(country), 1, 5), 6))

server <- function(input, output, session) {
  
  
  output$outpt_map <- renderEcharts4r({
    
    cns %>% 
      e_charts(country) %>% 
      e_map(value) 
  })
  
  output$outpt_map_country <- renderPrint({
    
    input$outpt_map_country_clicked_data
    
  })
  
  output$out_cns <- renderTable({
    
    cns
    
  })
  
}

shinyApp(ui, server)

您尝试使用的回调是 id_clicked_data,但您提供的是打印输出的 ID 而不是地图输出。

input$outpt_map_country_clicked_data 替换为 input$outpt_map_clicked_data 并且有效:

library(shiny)
library(echarts4r)
library(countrycode)
library(dplyr)


ui <- fluidPage(
  echarts4rOutput('outpt_map'),
  verbatimTextOutput('outpt_map_country'),
  tableOutput('out_cns')
)


cns <- data.frame(
  country = countrycode::codelist$country.name.en
) %>% 
  mutate(value   = round(runif(length(country), 1, 5), 6))

server <- function(input, output, session) {
  
  
  output$outpt_map <- renderEcharts4r({
    
    cns %>% 
      e_charts(country) %>% 
      e_map(value) 
  })
  
  output$outpt_map_country <- renderPrint({
    
    input$outpt_map_clicked_data
    
  })
  
  output$out_cns <- renderTable({
    
    cns
    
  })
  
}

shinyApp(ui, server)