如何从 Shiny 中的情节事件中获取方面数据
How do I get facet data from a plotly event in Shiny
我正在尝试 shiny
包括一些 plotly
情节。我想使用反应事件,所以当我点击绘图时,另一个绘图会根据过滤后的数据进行更新。问题是我想要点击事件的情节有方面,我想根据点击的方面过滤数据。但据我所知,facet 信息不会在事件数据中发回。
我简化了 shiny plotly events 的示例以包含方面(请参阅下面的 reprex),但是 none 的事件接收到方面信息。特别是,我感兴趣的 event_data("plotly_click")
并没有在任何地方获得点击的方面。
library(plotly)
library(shiny)
ui <- fluidPage(
plotlyOutput("plot"),
verbatimTextOutput("hover"),
verbatimTextOutput("click"),
verbatimTextOutput("brush"),
verbatimTextOutput("zoom")
)
server <- function(input, output, session) {
output$plot <- renderPlotly({
# use the key aesthetic/argument to help uniquely identify selected observations
key <- row.names(mtcars)
p <- ggplot(mtcars, aes(x = mpg, y = wt, colour = factor(vs), key = key)) +
geom_point() +
facet_grid(rows = "gear")
ggplotly(p) %>% layout(dragmode = "select")
})
output$hover <- renderPrint({
d <- event_data("plotly_hover")
if (is.null(d)) "Hover events appear here (unhover to clear)" else d
})
output$click <- renderPrint({
d <- event_data("plotly_click")
if (is.null(d)) "Click events appear here (double-click to clear)" else d
})
output$brush <- renderPrint({
d <- event_data("plotly_selected")
if (is.null(d)) "Click and drag events (i.e., select/lasso) appear here (double-click to clear)" else d
})
output$zoom <- renderPrint({
d <- event_data("plotly_relayout")
if (is.null(d)) "Relayout (i.e., zoom) events appear here" else d
})
}
shinyApp(ui, server)
我一直在谷歌搜索,但找不到解决方案。有什么我可以传递给渲染函数的,例如,它确实获得了构面并可以在事件数据中将其发送回来吗?
好吧,你可以在你改编的示例代码中看到它们 "use the key aesthetic/argument to help uniquely identify selected observations"。为什么不用它来识别切面?
您只需调整代码中的一行,在 aes()
内更改 key = gear
。
我正在尝试 shiny
包括一些 plotly
情节。我想使用反应事件,所以当我点击绘图时,另一个绘图会根据过滤后的数据进行更新。问题是我想要点击事件的情节有方面,我想根据点击的方面过滤数据。但据我所知,facet 信息不会在事件数据中发回。
我简化了 shiny plotly events 的示例以包含方面(请参阅下面的 reprex),但是 none 的事件接收到方面信息。特别是,我感兴趣的 event_data("plotly_click")
并没有在任何地方获得点击的方面。
library(plotly)
library(shiny)
ui <- fluidPage(
plotlyOutput("plot"),
verbatimTextOutput("hover"),
verbatimTextOutput("click"),
verbatimTextOutput("brush"),
verbatimTextOutput("zoom")
)
server <- function(input, output, session) {
output$plot <- renderPlotly({
# use the key aesthetic/argument to help uniquely identify selected observations
key <- row.names(mtcars)
p <- ggplot(mtcars, aes(x = mpg, y = wt, colour = factor(vs), key = key)) +
geom_point() +
facet_grid(rows = "gear")
ggplotly(p) %>% layout(dragmode = "select")
})
output$hover <- renderPrint({
d <- event_data("plotly_hover")
if (is.null(d)) "Hover events appear here (unhover to clear)" else d
})
output$click <- renderPrint({
d <- event_data("plotly_click")
if (is.null(d)) "Click events appear here (double-click to clear)" else d
})
output$brush <- renderPrint({
d <- event_data("plotly_selected")
if (is.null(d)) "Click and drag events (i.e., select/lasso) appear here (double-click to clear)" else d
})
output$zoom <- renderPrint({
d <- event_data("plotly_relayout")
if (is.null(d)) "Relayout (i.e., zoom) events appear here" else d
})
}
shinyApp(ui, server)
我一直在谷歌搜索,但找不到解决方案。有什么我可以传递给渲染函数的,例如,它确实获得了构面并可以在事件数据中将其发送回来吗?
好吧,你可以在你改编的示例代码中看到它们 "use the key aesthetic/argument to help uniquely identify selected observations"。为什么不用它来识别切面?
您只需调整代码中的一行,在 aes()
内更改 key = gear
。