Plotly and Shiny: возможно ли получить данные о событии в виде объекта списка? - PullRequest
0 голосов
/ 04 марта 2020

Вопрос: Можно ли использовать график и блеск, чтобы извлечь список всех кривых, номеров точек, х и у одновременно?

Пример (см. Код): При нажатии на каждую полосу, p возвращается ниже. Можно ли получить список значений x, pointNumbers et c без первоначального нажатия на график? Т.е. x-объект c (4, 6, 8), объект pointNumber c (0, 1, 2)

  curveNumber pointNumber x    y
1           0           2 8 15.1
  curveNumber pointNumber x        y
1           0           1 6 19.74286

Пример кода

ui <- fluidPage(
    plotlyOutput("plot")
)

server <- function(input, output) {

    output$plot <- renderPlotly({
      mtcars %>%
            group_by(cyl) %>%
            summarise(m = mean(mpg)) %>%
            plot_ly(., x = ~cyl,
              y = ~m, source = "test_plot") %>%
            add_bars()
    })

    observe({
        p <- event_data("plotly_click", source = "test_plot")
        print(p)
    })

}

# Run the application
shinyApp(ui = ui, server = server)

1 Ответ

0 голосов
/ 04 марта 2020

Не уверен, что ты хочешь. Вы можете получить x и y с plotly_build, см. Ниже. И pointNumber это просто 0, ..., length(x)-1.

p <- mtcars %>%
  group_by(cyl) %>%
  summarise(m = mean(mpg)) %>%
  plot_ly(., x = ~cyl,
          y = ~m, source = "test_plot") %>%
  add_bars() 

pp <- plotly_build(p)
curves <- pp$x$data
curveNumber <- 0
dat <- curves[[curveNumber+1]]
as.vector(dat$x)
# [1] 4 6 8
as.vector(dat$y)
# [1] 26.66364 19.74286 15.10000
...