我尝试使用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)
答案 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(),因为可能没有剩余值,因此无法绘制任何值。
我希望有所帮助。