如何在R-Plotly scatter3D中更改单击的标记样式?

时间:2019-08-08 12:46:16

标签: r shiny plotly r-plotly

我正在尝试在3D图上可视化大量数据,并且一直在使用单击事件在所选标记上显示其他数据。很难看到没有更改颜色就选择了哪个标记。

有几种使用js事件监听器的解决方案在scatter3D上不起作用。 This solution确实成功生成了一个点,但是它使我的vis的摄像头角度倾斜,并且没有像我的标记那样随尺寸缩放,因此实际上似乎无法替换它们。

当单击一个标记时,

plotlyProxy和plotlyProxyInvoke确实成功更改了标记的颜色和大小,但是它们更改了所有标记的颜色和大小。我不知道如何引用特定的标记点。

library(shiny)
library(ggplot2)
library(plotly)

ui <- navbarPage("Page",
  page1 <- fluidPage(
    titlePanel("Panel"),
  plotlyOutput('plot'))
)

server <- function(input, output, session) {
  output$plot <- renderPlotly({
    p <- plot_ly()
    p <- add_trace(p,
                   data = mtcars,
                   x = ~mpg,
                   y = ~cyl,
                   z = ~wt,
                   color = ~hp,
                   type = 'scatter3d',
                   mode = "markers")
  })

我保留了click事件数据变量,但是当我尝试在plotlyProxyInvoke函数中的任何地方使用它时,它实际上并不起作用。

  observeEvent(event_data("plotly_click"), {
    #clickpoint <- event_data("plotly_click")$pointNumber[1] + 1
    plotlyProxy("plot", session) %>% 
      plotlyProxyInvoke("restyle", list(marker = list(opacity = 1, color = "red")))
  })
  }

shinyApp(ui = ui, server = server)

当我运行此代码并单击一次时,所有标记都会根据我的事件而改变,而不仅仅是选定的标记。

0 个答案:

没有答案