Я использую event_data("plotly_click")
Plotly, чтобы делать вещи (открывая модальное окно) после того, как пользователь щелкнул маркер на точечной диаграмме. После этого (например, при закрытии модального окна) event_data("plotly_click")
, конечно же, не меняется, и нажатие на тот же маркер, следовательно, не вызывает снова то же действие.
Минимальный пример:
library(plotly)
ui <- fluidPage(
plotlyOutput("plot")
)
server <- function(input, output, session) {
output$plot <- renderPlotly({
mtcars %>% plot_ly(x=~disp, y=~cyl)
})
# Do stuff after clicking on a marker in the plot
observeEvent(event_data("plotly_click"), {
print("do some stuff now") # this is not executed after second click on same marker
})
}
shinyApp(ui, server)
Я пробовал обходные пути с помощью onclick
отshinjs, но безрезультатно (он хорошо работает в пустых областях графика, но не при нажатии на маркеры):
shinyjs::onclick(id="plot", print("clicked"))
Я также пытался использовать реактивное значение, которое сохраняет последний щелчок и сразу после этого сбрасывается (например, с помощью event_data("plotly_hover")
), но все попытки терпят неудачу, потому что event_data("plotly_click")
остается в своем старом значении.
Кто-нибудь может помочь?