R-Plotly: Box Select - Извлечь координаты x и y - PullRequest
0 голосов
/ 16 июня 2020

Для моего проекта мне нужно извлечь координаты x и y «Box Select», которые я использую для выбора данных в блестящем приложении (поскольку мне нужно фильтровать по этим значениям в течение определенного периода времени). Чтобы быть более точным - мне нужны только фактические координаты созданного поля, а не значения x / y выбранных идентификаторов внутри.

JS - Обработчики событий <- Я видел здесь, что обработчик событий имеет эти координаты (массив x и y), и вы можете увидеть их в консоли - но как мне сохранить их динамически внутри R? </p>

Уже спасибо.

library(shiny)
library(plotly)

ui <- fluidPage(
   plotlyOutput('myPlot'),
   )

server <- function(input, output, session){
  output$myPlot = renderPlotly({
    plot_ly(data = iris, x = ~Sepal.Length, y = ~Petal.Length, color = ~Species) %>%
      layout(dragmode = "select")
  })
}

shinyApp(ui, server)

Ответы [ 2 ]

1 голос
/ 16 июня 2020

Вы можете извлечь данные с помощью вызова event_data:

library(shiny)
library(plotly)

ui <- fluidPage(
    plotlyOutput('myPlot'),
    verbatimTextOutput("se")
)

server <- function(input, output, session){
    output$myPlot = renderPlotly({
        plot_ly(data = iris, x = ~Sepal.Length, y = ~Petal.Length, color = ~Species) %>%
            layout(dragmode = "select")
    })

    output$se <- renderPrint({
        d <- event_data("plotly_selected")
        d
    })
}

shinyApp(ui, server)

enter image description here

0 голосов
/ 16 июня 2020

После долгих попыток я выяснил, что данные о диапазоне ящиков не хранятся в event_data для «selected», но они доступны как для «чистки», так и для «чистки».

Вот мое решение для получения диапазона созданного поля:

library(shiny)
library(plotly)

ui <- fluidPage(
  plotlyOutput('myPlot'),
)

server <- function(input, output, session){

  output$myPlot = renderPlotly({
    plot_ly(data = iris, x = ~Sepal.Length, y = ~Petal.Length, color = ~Species, 
            type = 'scatter') %>%
      layout(dragmode = "select") %>%
      event_register(event = "plotly_brushed")
  })

  # Drag based selection in plotly graph
  selected_range <- reactiveVal({})
  observeEvent(event_data("plotly_brushed"), {
    # storing the values in a reactive value for later use
    selected_range(event_data("plotly_brushed"))

    # alternative method if you want to use it within the same observer/reactive  expression
    #xmin <- event_data("plotly_brushed")$x[1]
    #xmax <- event_data("plotly_brushed")$x[2]
    #ymin <- event_data("plotly_brushed")$y[1]
    #ymax <- event_data("plotly_brushed")$y[2]
  })
}

shinyApp(ui, server)
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...