Я создаю блестящее приложение с 2 различными вкладками. У каждого из них есть пара сюжетных сюжетов. Я хочу, чтобы графики реагировали только на события plotly_click из соответствующей вкладки. Моя проблема возникает, когда вместо того, чтобы разделить участки, я хочу, чтобы один из них был частью подзаговора.
Для этого я добавил параметр source к графикам, чтобы определить, какой график был выбран. Когда графики представляют собой отдельные графики (а не внутри подпрограммы), они работают хорошо, но если я попытаюсь поместить один из них в составной участок, никакие события, связанные с этим графиком, не будут вызваны.
Рабочий код выглядит примерно так:
ui <- navbarPage("",
tabPanel("Tab1",
plotlyOutput("tab1plot1"),
plotlyOutput("tab1plot2")
),
tabPanel("Tab2",
plotlyOutput("tab2plot1"),
plotlyOutput("tab2plot2")
)
)
server <- function(input, output, session) {
output$tab1plot1 <- renderPlotly({
plot_ly(x = dates, y = y, source = "tab1plot1", ...)
})
output$tab1plot2 <- renderPlotly({
click <- event_data("plotly_click", source = "tab1plot1")
if (!is.null(click)) {
# process click
plot_ly(x = dates, y = processedY, ...)
}
else { NULL }
})
output$tab2plot1 <- renderPlotly({
plot_ly(source = "tab2plot1", ...)
})
output$tab2plot2 <- renderPlotly({
click <- event_data("plotly_click", source = "tab2plot1")
if (!is.null(click)) {
# process click ...
}
else { ... }
})
Это работает, как и ожидалось, но проблема возникает, когда я пытаюсь изменить tab1plot1 для составного субплана следующим образом:
server <- function(input, output, session) {
output$tab1plot1 <- renderPlotly({
p1 <- plot_ly(x = dates, y = y, source = "tab1plot1", ...)
p2 <- plot_ly( ... )
subplot(p1, p2, nrows = 2, shareX = TRUE)
})
...
}
Если я это сделаю, событие plotly_click никогда не будет запущено, и поэтому tab1plot2 никогда не изменяется. На самом деле, я получаю сообщение журнала:
«Предупреждение: может быть только один: источник
Предупреждение. Событие plotly_click, связанное с идентификатором источника main, не зарегистрировано. Чтобы получить данные этого события, добавьте event_register(p, 'plotly_click')
к графику (p
), из которого вы хотите получить данные события. "
Я что-то упустил или сюжет просто не поддерживает атрибут source внутри подзаговора?