2017-09-26 18 views
-1

슬라이더 입력이있는 대화식 그래프에서 nearPoints()을 사용하여 행 데이터를 얻을 수 있는지 궁금합니다.슬라이더 입력이있는 반짝이는 nearPoints()

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()이 슬라이더 입력없이 완벽하게 작동한다 :처럼 내 app.R 파일을 찾습니다. 슬라이더 입력을 사용했을 때 최대까지 행 데이터를 가져올 수 없습니다. 슬라이더 입력으로 작업 할 수있는 방법이 있습니까? 어떤 도움을 주셔서 감사합니다.

+0

renderUI를 사용해 보셨습니까? – amrrs

+0

나는 단지'sliderInput'에서'input $ plot1_click'의 값을 사용하기를 원합니다. 원하는 경우,'sliderInput' 함수를'server.R' 내부의'renderUI' 출력 함수로 옮겨야합니다. 그런 다음'ui.utput'을 사용하여'ui.R'에서 렌더링 할 수 있습니다. 다음은 [관련 문서] (https://shiny.rstudio.com/reference/shiny/latest/renderUI.html) –

+0

슬라이더 입력이 "Obs"이고 함수에 전달할 행 수를 제어합니다. "input $ plot1_click"은 마우스가 클릭 된 지점입니다. –

답변

0

다음 코드는 저에게 적합합니다. nearPointsaes(x = test[,2], y = test[,1]) 문 때문에 표시되는 데이터 집합의 열을 알 수없는 것 같습니다. 또 다른 가능한 수정 방법은 xvaryvarnearPoints에 설정하는 것입니다.

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) 

빠른 참고 : 당신은 data()를 호출하여 사용할 수있는 모든 데이터 세트의 목록을 얻을 수 R.의 기본 데이터 세트 중 하나를 사용하여 문제의 코드를 재현 할 수 있도록 노력하십시오.