我正在尝试使用ggplot功能在鼠标单击附近的nearPoints中找到点,但是它不起作用。我使用下面的代码创建了两个diamonds data.frame的有光泽的应用程序:

library(shiny)
library(ggplot2)
ui <- fluidPage(
mainPanel(
uiOutput("tb")
)
)
server <- function(input,output){

   output$diamonds1 <- renderPlot({

        print(ggplot(diamonds, aes(x=carat, y=price, col=clarity)) +
                                geom_point(alpha=0.5)+ facet_wrap(~color, scales="free"))
   })
   output$diamonds2 <- renderPlot({

        print(ggplot(diamonds, aes(x=carat, y=price, col=clarity)) +
                               geom_point(alpha=0.5)+ facet_wrap(~cut, scales="free"))
   })

   output$info <- renderPrint({

        nearPoints(diamonds, input$plot_click, threshold = 10, maxpoints = 1,
                   addDist = TRUE)
   })

output$tb <- renderUI({
tabsetPanel(tabPanel("First plot",
                     plotOutput("diamonds1")),
            tabPanel("Second plot",
                     plotOutput("diamonds2", click = "plot_click"),
                     verbatimTextOutput("info")))
})
}
shinyApp(ui = ui, server = server)


我在第二个情节中不断收到此错误


错误:nearPoints:无法自动从coordinfo推断xvar


r - nearPoints无法自动从 Shiny 的coordinfo推断`xvar`-LMLPHP

任何建议,将不胜感激?

最佳答案

我想这就是你想要的。您正在“打印” ggplot,这显然使nearPoints感到困惑:

library(shiny)
library(ggplot2)
ui <- fluidPage(
  mainPanel(
    uiOutput("tb")
  )
)
server <- function(input,output){

  output$diamonds1 <- renderPlot({

    print(ggplot(diamonds, aes(x=carat, y=price, col=clarity)) +
                            geom_point(alpha=0.5)+ facet_wrap(~color, scales="free"))
  })
  output$diamonds2 <- renderPlot({

    ggplot(diamonds, aes(x=carat, y=price, col=clarity)) +
                     geom_point(alpha=0.5)+ facet_wrap(~cut, scales="free")
  })

  output$info <- renderPrint({
    nearPoints(diamonds,input$plot_click,threshold = 10, maxpoints = 1,addDist = TRUE)
  })

  output$tb <- renderUI({
    tabsetPanel(tabPanel("First plot",
                         plotOutput("diamonds1")),
                tabPanel("Second plot",
                         plotOutput("diamonds2", click = "plot_click"),
                         verbatimTextOutput("info")))
  })
}
shinyApp(ui = ui, server = server)


产生这一点-注意data.frame输出是diamonds中鼠标单击附近的点:

r - nearPoints无法自动从 Shiny 的coordinfo推断`xvar`-LMLPHP

09-06 05:15