rshiny中的鼠标单击事件

时间:2015-06-11 10:09:18

标签: r shiny mouseclick-event

我尝试使用RShiny中的plot_click选项来使用点击事件。我想要做的是:我想从第一个图表中选择一个特定的气泡,然后只应为上面选择的车辆填充下面的图表。这该怎么做?这是我的代码:

ui <- basicPage(
  plotOutput("plot1", click = "plot_click"),
  plotOutput("plot2")  
)

server <- function(input, output) {
  output$plot1 <- renderPlot({
    plot(mt$wt, mt$mpg)
  })

  output$plot2 <- renderPlot({
    test <- data.frame(nearPoints(mt, input$plot_click, xvar = "wt", yvar = "mpg"))
    test2 <- filter(test,Car_name)
    car <- test2[1,1]
    mt2 <- filter(mt,Car_name == car)
    plot(mt2$wt,mt2$mpg)

  })
}
shinyApp(ui, server)

1 个答案:

答案 0 :(得分:0)

我重新安排了你的服务器功能。我将选定的点移动到无功值,可以由打印/绘图输出使用。 此外,我不确定你想要通过所有过滤实现什么。也许您可以使用mtcars-data更改原始问题,使其成为可重复的示例,因为您似乎正在使用它。

library(shiny)
ui <- basicPage(
  plotOutput("plot1", click = "plot_click"),
  verbatimTextOutput("info"),
  plotOutput("plot2")
)

server <- function(input, output) {
  output$plot1 <- renderPlot({
    plot(mtcars$wt, mtcars$mpg)
  })

  selected_points <- reactiveValues(pts = NULL)
  observeEvent(input$plot_click, {
    x <- nearPoints(mtcars, input$plot_click, xvar = "wt", yvar = "mpg")
    selected_points$pts <- x
  })

  output$info <- renderPrint({
    selected_points$pts
  })

  output$plot2 <- renderPlot({
    req(input$plot_click)
    test <- selected_points$pts
    plot(test$wt,test$mpg)
  })
}
shinyApp(ui, server)

点击的点存储在selected_points的反应值中,该值在observeEvent函数中指定。 如果你在plot2函数中过滤很多,则必须使用req()或validate(),因为可能没有剩余值,因此无法绘制任何值。

我希望有所帮助。