Используйте bsModal в пакетеinyBS с plotly R plotly_click для генерации нового графика во всплывающем окне.
Вот мой код для основного блестящего приложения, использующегоplotly_click
событие по желанию показать другой сюжет. Мне бы хотелось, чтобы этот боковой блок рендеринга отображался в модальном всплывающем окне, а не на боковой стороне страницы.
library(shiny)
library(plotly)
df1 <- data.frame(x = 1:10, y = 1:10)
df2 <- data.frame(x = c(rep('a', 10), rep('b', 10)),
y = c(rnorm(10), rnorm(10, 3, 1)))
ui <- fluidPage(
column(6, plotlyOutput('scatter')),
column(6, plotlyOutput('box'))
)
server <- function(input, output) {
output$scatter <- renderPlotly({
plot_ly(df1, x = x, y = y, mode = 'markers', source = 'scatter')
})
output$box <- renderPlotly({
eventdata <- event_data('plotly_click', source = 'scatter')
validate(need(!is.null(eventdata),
'Hover over the scatter plot to populate this boxplot'))
plot_ly(df2, x = x, y = y, type = 'box')
})
}
shinyApp(ui = ui, server = server)
Я смог следить за этим вопросом (Блестящий: сюжет приводит к всплывающему окну) и ответ, и попытался использовать его сtrigger
изplotly_click
безуспешно. Любая идея, как осуществить то же самое с помощью сюжетного щелчка?
ОБНОВЛЕНИЕ: я ясно вижу, чтоplotly
сюжет может быть представлен вshinyBS
модальное всплывающее окно, как показано в этом коде.
df1 <- data.frame(x = 1:10, y = 1:10)
ui <- fluidPage(
actionButton('go', 'Click Go'),
bsModal('plotlyPlot', 'Here is a Plot', 'go', plotlyOutput('scatter1'))
)
server <- function(input, output) {
output$scatter1 <- renderPlotly({
plot_ly(df2, x = x, y = y, mode = 'markers', source = 'scatter1')
})
}
shinyApp(ui = ui, server = server)
ВместоactionButton
в качестве триггера, я хочуplotly_click
или жеplotly_hover
как там триггер (в оригинальном примере).