简体   繁体   中英

Shiny Interactive Graph plot showing row names

I am using Shiny and ggplot2 for an interactive graph. I also used "plot1_click" to get x and y locations.

output$selected <- renderText({
paste0("Value=", input$plot1_click$x, "\n",
       "Names=", input$plot1_click$y)  }) #how to get names???

This is part of server code. Here what I want is, instead of printing the "y" coordinates, I want to print the corresponding name written in y-axis. Is there any possible way for it??

As far as I know clicking points is not supported in plotOutput . Click events will only return coordinates of the click location. Those coordinates can however be used to figure out the nearest point.

This shiny app from the shiny gallery pages uses the function shiny::nearPoints which does exactly that. Here is a minimal example.

library(shiny)
library(ggplot2)

shinyApp(
  fluidPage(
    plotOutput("plot", click = "plot_click"),
    verbatimTextOutput('print')
  ),
  server = function(input, output, session){
    output$plot <- renderPlot({ggplot(mtcars, aes(wt, mpg)) + geom_point()})
    output$print = renderPrint({
      nearPoints(
        mtcars,             # the plotting data
        input$plot_click,   # input variable to get the x/y coordinates from
        maxpoints = 1,      # only show the single nearest point 
        threshold = 1000    # basically a search radius. set this big enough 
                            # to show at least one point per click
      )
    })
  }
)

The verbatimTextOutput shows you the nearest point to the clicked location. Notice that nearPoints only works with ggplots like that. But the help page suggests that there is also a way to use this with base graphics.

The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM