在 Plotly 中双击未注册

问题描述 投票:0回答:1

我正在尝试制作一个闪亮的应用程序,用户可以在其中单击和双击各种对象来执行各种操作。点击工作正常,但我无法让双击工作。在这个希望简单、可重现的示例中,我无法打印双击的详细信息。

library(shiny)
library(plotly)

ui <- function(){
  fluidPage(
    
    plotlyOutput("plot2")
  )
}

server <- function(input, output, session){
  
  myPlotEventData2 <- reactive({
    event_data(event = "plotly_doubleclick", source = "myPlotSource2")
  })
  
  myPlotEventData3 <- reactive({
    event_data(event = "plotly_click", source = "myPlotSource2")
  })
  
  
  filtered_data1 <- reactive({
    generation_types <- c("Solar", "Wind", "Hydro", "Nuclear")
    MWh <- c(150, 200, 180, 250)
    random_data <- data.frame(generation_type = generation_types, MWh = MWh)
    
  }) 
  output$plot2 <- renderPlotly({
    
    a <- filtered_data1()
    
    plot_ly(data = a, labels = ~generation_type, values = ~round(MWh),
            ids = ~id,
            type = "pie", sort = FALSE,
            
            source = "myPlotSource2") %>%
      layout(showlegend = FALSE, margin = list(l = 0, r = 0, t = 0, b = 0))
    
  })
  observe({
    clicked_data <- myPlotEventData2()
    if (!is.null(clicked_data)) {
      clicked_segment <- clicked_data$pointNumber + 1
      segment_label <- filtered_data1()$generation_type[clicked_segment]
      segment_value <- filtered_data1()$MWh[clicked_segment]
      print(paste("right segment:", segment_label))
      print(paste("right value:", segment_value))
    }
  })
  
  observe({
    clicked_data <- myPlotEventData3()
    if (!is.null(clicked_data)) {
      clicked_segment <- clicked_data$pointNumber + 1
      segment_label <- filtered_data1()$generation_type[clicked_segment]
      segment_value <- filtered_data1()$MWh[clicked_segment]
      print(paste("Clicked segment:", segment_label))
      print(paste("Segment value:", segment_value))
    }
  })
  
  
}

shinyApp(ui, server)
r shiny plotly shiny-reactivity mouseclick-event
1个回答
0
投票

这是预期的行为。

plotly_doubleclick
活动不提供任何
event_data

请参阅章节17.2.6 事件优先级 此处

有许多事件可以通过 event_data() 访问,但不能 包含任何信息(例如,“plotly_doublelick”、“plotly_deselect”、 “plotly_afterplot”等)。这些事件会自动给出 事件优先级,因为它们相应的闪亮输入值永远不会 变化。 “plotly_doublelick”等事件的一种常见用例 (在缩放或平移拖动模式下双击时触发)和 “plotly_deselect”(在选择模式下双击时触发)是 清除或重置累积的事件数据。

© www.soinside.com 2019 - 2024. All rights reserved.