R - ggplot:获取点击图的id

时间:2017-06-26 12:52:37

标签: r ggplot2 shiny

Plotly具有函数event_data,它将响应绘图点的点击。但是,您必须指定一个"来源"用于标识您要观看的地块的event_data。

ggplot中是否也提供此类功能。如果不是,那么我们如何才能找到所点击的情节的ID。

注意:我将wordcloud称为图形,这些图形是动态生成的。

3 个答案:

答案 0 :(得分:1)

这是一个检查点击哪个Plot的最小示例。只要发生点击事件,反应值selected_plot就会更新。

library(shiny)

ui = fluidPage(
  verbatimTextOutput("text"),
  plotOutput("plot1", click = "plot1_click"),
  plotOutput("plot2", click = "plot2_click")
)

server = function(input, output, session){
  output$plot1 = renderPlot({
    hist(rnorm(1000))
  })
  output$plot2 = renderPlot({
    plot(cumsum(rnorm(1000)))
  })

  selected_plot = reactiveVal()
  observeEvent(input$plot1_click, {selected_plot(1)})
  observeEvent(input$plot2_click, {selected_plot(2)})

  output$text = renderPrint({
    cat("selected plot:", selected_plot())
  })
}

shinyApp(ui, server)

请注意,您还可以使用click的{​​{1}}参数在服务器端指定outputArgs选项。

答案 1 :(得分:0)

您可以将ggplot图表翻译为plotly - 创建图表后调用ggplotly(<yourplot>)图表并使用event_data()函数:

library(plotly)

set.seed(100)
d <- diamonds[sample(nrow(diamonds), 1000), ]    
p <- ggplot(data = d, aes(x = carat, y = price)) + geom_point()
ggplotly(p)

enter image description here

答案 2 :(得分:0)

没有任何例子很难解释。但是,当您使用Shiny感谢包ggiraph时,geom_point可以将geom_point_interactive更改为selected_dot <- reactive({ input$plot_selected }) ,之后会使用以下内容:

{ddd($variable)} -> debug and die

{ppp($variable)} -> debug only

希望它有所帮助