首页 > 解决方案 > plotly_selected 在 R 中不起作用

问题描述

我正在开发一个带有散点图的应用程序,该散点图根据下拉菜单对其点进行着色,然后,我希望当用户选择部分数据时,会更改反应值,以便我可以显示该点的子集一张桌子。

我不知道为什么会收到此警告:

未注册与源 ID 为“plotPCA”相关的“plotly_selected”事件。为了获取此事件数据,请添加 您希望从中获取事件数据event_register(p, 'plotly_selected')的绘图 ( )。p

这使我的代码无法正常运行。未捕获在我的 PCA 图(散点图)中选择某些数据的事件。

这是我的代码: 在我的输入中,我有:

...
selectInput('selectColorForPCA', 'Color by', '', selectize=TRUE),
plotlyOutput('plotPCA', width="800px", height="600px"),
...

在我的输出中:

      output$plotPCA <- renderPlotly({
        dat.tmp <- getPCAdata  #this is a reactive value
        if(!is.null(dat.tmp)) {
          color_group = NULL
          if(!is.null(input$selectColorForPCA) & input$selectColorForPCA != "" ){
            color_group = ~get(input$selectColorForPCA)  
          } 
          plot_ly(dat.tmp,
                x = ~PC1,
                y = ~PC2,
                color = color_group, ## color by selectColorForPCA select input
                # colors = "Dark1",
                type = 'scatter',
                mode = 'markers',
                hoverinfo = 'text',
                text = ~SampleID,
                source='plotPCA'
          )
        }
      })

(这部分只在加载页面时运行,我的意图是当用户在散点图中选择一些点时,它会改变反应值getPCAdata :)

  observeEvent(
    eventExpr = event_data("plotly_selected", source = "plotPCA"), 
    handlerExpr = {
      event.data <- event_data("plotly_selected", source = "plotPCA") ## should be plotPCA??
      if (!is.null(event.data)) {
        dat.res <- data[event.data$pointNumber + 1,]
      } else {
        dat.res <- isolate(getPCAdata())
      }
      getPCAdata <- dat.res
    }
  )

请帮忙!

标签: rshinyr-plotlyshinyappsshiny-reactivity

解决方案


推荐阅读