Shiny Plotly event_data Error only when using a brilliant server

I use shiny, plotly and shinyBS as follows to create a modal popup with a new plot when the plotly_click event occurs on the plot. It works great when I run locally as well as in the local browser.

However, when I deploy it to the Shiny server, I get this error and have no idea what that means. Any thoughts?

library(shiny)
library(plotly)
library(shinyBS)

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')),
  bsModal('boxPopUp', '', '', plotlyOutput('box'))
)

server <- function(input, output, session) {
  output$scatter <- renderPlotly({
    plot_ly(df1, x = ~x, y = ~y, mode = 'markers',
            type = 'scatter', source = 'scatter')
  })
  observeEvent(event_data("plotly_click", source = "scatter"), {
    toggleModal(session, "boxPopUp", toggle = "toggle")
  })
  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)

The error message is as follows (shown in the Brilliant Server log for the application):

Warning: Error in event_data: attempt to apply non-function
Stack trace (innermost first):
    59: event_data
    58: observeEventExpr
     1: runApp
+4
source share
1 answer

, Shiny 0.14. RStudio, , shinyapps .

:

    library(shiny)
    library(plotly)
    library(shinyBS)

    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'))
    )

    server <- function(input, output, session) {
            output$scatter <- renderPlotly({
                    plot_ly(df1, x = x, y = y, mode = 'markers',
                            type = 'scatter', source = 'scatter')
            })

            observeEvent(event_data("plotly_click", source = "scatter"), {
                    showModal(modalDialog(
                            renderPlotly({
                                    plot_ly(df2, x = x, y = y, type = 'box')
                            }),
                            easyClose = TRUE
                    ))
            })

    }

    shinyApp(ui = ui, server = server)
+2

Source: https://habr.com/ru/post/1656036/


All Articles