I am designing a Shiny app which contains a plotly
scatter plot. I would like for the user to be able to click on the graph to record an event using the event_data
function, but then be able to clear that event on the click of an actionButton
. Some example code can be seen below:
library(shiny)
library(plotly)
ui <- fluidPage(
actionButton("clearEvent", label = "clear event"),
verbatimTextOutput("plotVal"),
plotlyOutput('plot1')
)
server <- function(input, output, session) {
output$plot1 <- renderPlotly({
d <- diamonds[sample(nrow(diamonds), 1000), ]
plot_ly(d, x = ~carat, y = ~price, color = ~carat,
size = ~carat, text = ~paste("Clarity: ", clarity))
})
output$plotVal <- renderPrint({
e <- event_data("plotly_click")
if (is.null(e)) {
NULL
} else {
e
}
})
observeEvent(input[["clearEvent"]], {
e <- NULL
})
}
shinyApp(ui = ui, server = server)
This doesn't clear the event like I would expect, however. Looking into the code for event_data
shows that this is probably because it is stored within the session
object itself. Any ideas how I can overwrite it?
The only similar thing I have come across is Clear plotly click event but it's very hacky and doesn't seem to work for me.
See Question&Answers more detail:
os 与恶龙缠斗过久,自身亦成为恶龙;凝视深渊过久,深渊将回以凝视…