带滑块输入的闪亮nearPoints()

时间:2017-09-26 07:11:33

标签: r shiny slider interactive

我想知道是否可以使用滑块输入的交互式图形中的nearPoints()获取行数据。我的app.R文件看起来像:

library('shiny')
library('ggplot2')

dt <-read.csv('file.csv')
ui <- fluidPage(
        plotOutput("plot1", height = 550, click = "plot1_click"),
    fluidRow(
        column(3,
        sliderInput("Obs", "Number of Books", min = 1, max = nrow(up), value = 50)
        ),
        column(3, offset = 3, 
               h4("Legends"),
         verbatimTextOutput("selected")
        )  
      )
    )
server <- function(input, output) {
   mydata <- reactive({
    dt[1:as.numeric(input$Obs),]
  })
  output$plot1 <- renderPlot({
    test <- mydata()
    ggplot(data = test, aes(x = test[,2], y = test[,1])) +  geom_point()
  }) 
  output$selected <- renderPrint({
    file <- mydata()
    nearPoints(file, input$plot1_click, threshold = 10, maxpoints = 1,
               addDist = FALSE)
  })
}
shinyApp(ui = ui, server = server)

没有此滑块输入,闪亮的nearPoints()工作正常。当我使用滑块输入时,我无法获得行数据直到最大值。是否有任何方法可以使用滑块输入?任何帮助表示赞赏。

1 个答案:

答案 0 :(得分:0)

以下代码适用于我。由于nearPoints语句,似乎aes(x = test[,2], y = test[,1])无法分辨数据集的哪些列。另一种可能的解决方法是在xvar中设置参数yvarnearPoints

library('shiny')
library('ggplot2')

dt <-mtcars
ui <- fluidPage(
  plotOutput("plot1", height = 550, click = "plot1_click"),
  fluidRow(
    column(3,
           sliderInput("Obs", "Number of Cars", min = 1, max = nrow(dt), value = 50)
    ),
    column(3, offset = 3, 
           h4("Legends"),
           verbatimTextOutput("selected")
    )  
  )
)
server <- function(input, output) {
  mydata <- reactive({
    dt[1:as.numeric(input$Obs),]
  })
  output$plot1 <- renderPlot({
    test <- mydata()
    ggplot(data = test, aes(mpg, wt)) +  geom_point()
  }) 
  output$selected <- renderPrint({
    file <- mydata()
    nearPoints(file, input$plot1_click, threshold = 100, maxpoints = 1,
               addDist = FALSE)
  })
}
shinyApp(ui = ui, server = server)

快速记录:请尝试使用R中的一个默认数据集使问题中的代码重现。您可以通过调用data()获取所有可用数据集的列表。