ggplotly 获取点击的数据值

ggplotly get data values of clicks

如何获取使用 ggplot 创建并在 R shiny 中绘制的交互式地图的 x 和 y 坐标?我想获取 x 轴值并基于该值显示其他数据。这是一些伪代码。

library(shiny)
library(plotly)
library(ggplot2)


ui <- fluidPage(

       plotlyOutput("distPlot")
    
 )


server <- function(input, output) {

output$distPlot <- renderPlotly({
    gg1 = iris %>% ggplot(aes(x = Petal.Length, y = Petal.Width)) + geom_point()
    ggplotly(gg1)
    })
}

 shinyApp(ui = ui, server = server)

也许这就是您要找的。 plotly 包提供了一个函数 event_data() 来获取例如闪亮应用程序中点击事件的坐标。参见 here。如果你有多个地块,你可以使用 source 参数来设置一个 id 并获取特定地块的事件数据:

library(shiny)
library(plotly)
library(ggplot2)


ui <- fluidPage(
  
  plotlyOutput("distPlot"),
  verbatimTextOutput("info")
  
)


server <- function(input, output) {
  
  output$distPlot <- renderPlotly({
    gg1 = iris %>% ggplot(aes(x = Petal.Length, y = Petal.Width)) + geom_point()
    ggplotly(gg1, source = "Plot1")
  })
  
  output$info <- renderPrint({
    d <- event_data("plotly_click", source = "Plot1")
    
    if (is.null(d)) {
      "Click events appear here (double-click to clear)"
    } else {
      x <- round(d$x, 2)
      y <- round(d$y, 2)
      cat("[", x, ", ", y, "]", sep = "")
    }
  })
}

shinyApp(ui = ui, server = server)