Highcharts 要捕获未选择类别的事件

Highcharts 要捕获未选择类别的事件,highcharts,shiny,r-highcharter,Highcharts,Shiny,R Highcharter,我正在使用highcharter图书馆。我想根据饼图(甜甜圈)中特定类别的选择拆分(或过滤)其他图表。我下面的代码工作正常 所需结果-当用户在选择后再次单击饼图时,应删除筛选。下面的代码捕获上次单击的类别,并使用curre()和lstre()反应值与当前选择相匹配 问题当用户在饼图上单击两次以上时,上次单击的类别与当前选定的类别匹配,因此不会执行任何筛选 我尝试了hc\u add\u event\u point(event=“unselect”),它不允许用户选择饼图的特定类别超过两次 libr

我正在使用highcharter图书馆。我想根据饼图(甜甜圈)中特定类别的选择拆分(或过滤)其他图表。我下面的代码工作正常

所需结果-当用户在选择后再次单击饼图时,应删除筛选。下面的代码捕获上次单击的类别,并使用
curre()
lstre()
反应值与当前选择相匹配

问题当用户在饼图上单击两次以上时,上次单击的类别与当前选定的类别匹配,因此不会执行任何筛选

我尝试了
hc\u add\u event\u point(event=“unselect”)
,它不允许用户选择饼图的特定类别超过两次

library("shiny")
library("highcharter")
library(dplyr)

ui <- shinyUI(
  fluidPage(
    column(width = 8, highchartOutput("hcontainer", height = "500px")),
    column(width = 4, textOutput("text")),
    column(width = 4, dataTableOutput('temptable')))
  )


server <- function(input, output) {      

  a <- data.frame(b = LETTERS[1:5], c = 11:15)
  aa <- data.frame(b = LETTERS[1:5])


  output$hcontainer <- renderHighchart({      

    canvasClickFunction <- JS("function(event) {Shiny.setInputValue('canvasClicked', [this.name, event.point.name, Math.random()]);}")
    legendClickFunction <- JS("function(event) {Shiny.setInputValue('legendClicked', this.name);}")

    highchart() %>% 
      hc_chart(type="pie") %>% 
      hc_add_series_labels_values(labels  = a$b, values = a$c,
                                  innerSize = '60%',
                                  allowPointSelect= TRUE,
                                  slicedOffset = 20,
                                  states = list(
                                    select =  list(
                                      color= NULL,
                                      borderWidth = 5,
                                      borderColor = '#ccc'
                                    ))) %>%
      hc_plotOptions(series = list( 
                                   events = list(click = canvasClickFunction, 
                                                 legendItemClick = legendClickFunction))) %>% 
      hc_add_event_point(event = "unselect")


  })      

  makeReactiveBinding("outputText")

  rv <- reactiveValues(lstval=0,curval=0)

  observeEvent(input$canvasClicked[2], {
    rv$lstval <- rv$curval; 
    rv$curval <- input$canvasClicked[2]}
    )

  curre <- reactive({req(input$canvasClicked[2]); input$canvasClicked[2]; rv$curval})
  lstre <- reactive({req(input$canvasClicked[2]); input$canvasClicked[2]; rv$lstval})

  observeEvent(input$canvasClicked, {
    outputText <<- paste0("You clicked on series ", input$canvasClicked[1], " and the bar you clicked was from category ", input$canvasClicked[2], 
                          input$plot_hc_unselect, ".")
  })

  observeEvent(input$legendClicked, {
    outputText <<- paste0("You clicked into the legend and selected series ", input$legendClicked, ".")
  })

  output$text <- renderText({
    outputText
  })

  output$temptable <- renderDataTable(

    if (length(input$canvasClicked[2])>0) {
      if (curre()!=lstre())
    aa %>% filter(b==input$canvasClicked[2])
    else {
      aa
    }
    }
    else {aa}
    )
}

shinyApp(ui, server)
库(“闪亮”)
图书馆(“高宪章”)
图书馆(dplyr)
用户界面