Plotly具有函数event_data,它将响应绘图点的点击。但是,您必须为event_data指定一个“来源”,用于标识您要观看的地图。
有没有办法回应任何情节的点击并获得给定点击的来源ID?
答案 0 :(得分:1)
您可以遍历源列表,但是您必须自己跟踪更改,因为只有新的点击才能覆盖以前的点击事件:
shinyApp(ui=fluidPage(plotlyOutput("plot1"),
plotlyOutput("plot2")),
server=
function(input, output, session) {
output$plot1 <- renderPlotly(plot_ly(data = iris, x = ~Sepal.Length, y = ~Petal.Length, source="plot1"))
output$plot2 <- renderPlotly(plot_ly(data = iris, x = ~Sepal.Length, y = ~Petal.Length, source="plot2"))
states <- reactiveValues(source = c("plot1", "plot2"), value = c(0,0), changed = c(FALSE,FALSE))
observe({
for(src in states$source){
if( !is.null(event_data("plotly_click", source = src) ) ){
value <- event_data("plotly_click", source = src)[[2]]
if(states$value[states$source==src]!=value ){
states$value[states$source==src] <- value
states$changed[states$source==src] <- TRUE
}
}
}
if(sum(states$changed)>0)
print(paste(states$source[states$changed], 'has changed'))
states$changed <- c(FALSE,FALSE)
})
})