gpt4 book ai didi

删除 plotly 点击事件数据

转载 作者:行者123 更新时间:2023-12-04 12:31:41 24 4
gpt4 key购买 nike

我正在设计一个包含 plotly 的 Shiny 应用程序散点图。我希望用户能够点击图表以使用 event_data 记录事件。功能,但随后可以在单击 actionButton 时清除该事件.一些示例代码可以在下面看到:

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)

然而,这并没有像我期望的那样清除事件。查看 event_data 的代码显示这可能是因为它存储在 session 中对象本身。有什么想法可以覆盖它吗?

我遇到的唯一类似的事情是 Clear plotly click event但它非常hacky,似乎对我不起作用。

最佳答案

在您的示例中,e刚刚在 renderPrint 中定义并在 observeEvent即使 e 也不是全局性的在 observeEvent 中更改,它不会触发 renderPrint 中的任何内容.

您可以使用 reactiveValues为了这:

data <- reactiveValues(e=NULL)

observe({
data$e <- event_data("plotly_click")
})

output$plotVal <- renderPrint({
e <- data$e
if (is.null(e)) {
NULL
} else {
e
}
})

observeEvent(input[["clearEvent"]], {
data$e <- NULL
})
data$e每当用户单击绘图或按钮时都会更改,并且由于依赖于 data$erenderPrint ,只要 data$e 就会更新被改变。

关于删除 plotly 点击事件数据,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42996303/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com