Мне известно о https://plot.ly/r/shinyapp-plotly-events/, и я использую его как руководство. Но элемент ggplot, который я конвертирую в plotly, является выводом из функции fviz_dend
пакета factoextra
. Вот минимальный блестящий пример приложения, с которым я работаю:
library(factoextra)
library(plotly)
library(shiny)
library(DT)
ui <- fluidPage(
plotlyOutput("ggp"),
verbatimTextOutput("selected_points"),
DT::dataTableOutput("filtered_table")
)
server <- function(input, output, session) {
## ggplot output
fviz <- fviz_dend(
x = hclust(dist(mtcars)),
k = 5,
show_labels = TRUE,
type = "phylogenic",
phylo_layout = "layout_as_tree",
color_labels_by_k = TRUE,
palette = "igv"
)
## convert to ggplotly
ggfviz <- ggplotly(fviz)
## add keys
for (i in seq(7, 11)) {
ggfviz[["x"]][["data"]][[i-5]][["key"]] <-
as.character(ggfviz[["x"]][["data"]][[i]][["text"]])
}
output$ggp <- renderPlotly({
ggfviz
})
output$selected_points <- renderPrint({
event_data("plotly_selected")[5]
})
output$filtered_table <- DT::renderDataTable(
mtcars[which(rownames(mtcars) == event_data("plotly_selected")[5]), ],
)
}
shinyApp(ui, server)
Так что я пытаюсь использовать key
, к которому обращаются event_data("plotly_selected")[5]
, чтобы отфильтровать таблицу данных, и пока event_data("plotly_selected")[5]
действительно показывает ключ для output$selected_points
, он как-то не передается в фильтр данных.