我正在尝试在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)
当我运行此代码并单击一次时,所有标记都会根据我的事件而改变,而不仅仅是选定的标记。