2017-04-13 11 views
2

반짝이는 대화 형 플롯을 만들려고합니다. 원래 플롯을 클릭하면 별도의 fluidRow (다른 테이블/플롯)에서 클릭 한 점에 대한 정보를 표시하려고합니다. 나는 click input 변수가 "plot_click"이라고 불리는 나의 UI를 설정하기 위해 몇 가지 예제를 온라인으로 보냈다. 그러나, 내 서버에서이 입력을 찾을 수 없습니다 (서버에 입력 $를 입력하면 입력 변수 목록에 plot_click이 없습니다). 코드는 다음과 같습니다반짝이는 대화 형 플롯이 서버에서 클릭 입력을 찾을 수 없습니다.

shinyUI(fluidPage(


    # Application title 
    titlePanel("Test Project"), 

    sidebarLayout(
    sidebarPanel(
     selectInput("variable", "variable:", var_list), 
     selectInput("analysis_function", "Function", analy_fun_list)  ), 

    mainPanel(
     fluidRow(
     column(width = 4, 
       plotOutput("plot", height=350, click = clickOpts(id="plot_click") )  
       ) 
    ), 
     fluidRow(
     column(width = 6, 
       verbatimTextOutput("click_info")) 
    ) 

    ) 
) 

)) 

그리고 클릭 입력을 호출하는 서버 코드는 다음과 같습니다 :

output$click_info <- renderPrint({ 
    nearPoints(unlist(graph_react()[4]), input$plot_click, addDist=TRUE) 
}) 

강조하기 위해 찾을 수없는 마지막 줄에서 변수 "입력 $의 plot_click".

+0

당신이하고있는 것을 알아내는 데 더 많은 코드가 필요합니다. 예를 들어'unlist (graph_react() [4])를 어떻게 생각해 냈는지에 대한 힌트는 없습니다. –

+0

답장을 보내 주셔서 감사합니다. nearPoints의 첫 번째 인수는 데이터 프레임입니다. 여기서,이 반응 함수는 이런 종류의 데이터 프레임을 반환한다고 가정합니다. 이 함수는 4 개의 iterms를 목록으로 반환하기 때문에 마지막 목록을 검색하기 위해 unlist를 사용했습니다. 여기서 문제는 "input $"는 "plot_click"을 입력 옵션으로 찾을 수 없다는 것입니다. – Kenny

답변

1

글쎄, 나는 희망을 갖고 당신에게 가깝다는 작은 예제를 만들었다. 그것이 어떻게 작동하는지 보여준다.

  • 등재 일부 변수 (X, Y, Z), 일부 분석 함수 (SIN, COS, EXP)와
  • 입력 변수에 기초하여 그들로부터 플롯을 제작
  • 그들 데이터 그리드 gerated 귀하의 UI 기능에서 선택하십시오.

    library(shiny) 
    library(ggplot2) 
    
    var_list <- c("x","y","z") 
    analy_fun <- c("sin","cos","exp") 
    
    u <- shinyUI(fluidPage(
        titlePanel("Test ClickInfo"), 
        sidebarLayout(
        sidebarPanel(
         selectInput("variable", "variable:", var_list), 
         selectInput("analy_fun", "Analytic Function:", analy_fun)), 
        mainPanel(
         fluidRow(
         column(width = 4,plotOutput("plot", height=350, click=clickOpts(id="plot_click")) 
        ), 
         fluidRow(
         column(width = 6, verbatimTextOutput("click_info")) 
    )))))) 
    s <- function(input, output) { 
        gendata <- reactive({ 
        df <- expand.grid(x=-4:4,y=-4:4,z=-4:4) 
        df$sin <- sin(df$x+df$y+df$z) 
        df$cos <- cos(df$x+df$y+df$z) 
        df$exp <- exp(df$x+df$y+df$z) 
        df 
        }) 
        output$plot <- renderPlot({ 
        ggplot(gendata()) + geom_point(aes_string(x=input$variable,y=input$analy_fun)) 
        }) 
    
        output$click_info <- renderText({ 
        sprintf(" %s = %.2f \n %s = %.2f ",input$variable, input$plot_click$x, 
                 input$analy_fun, input$plot_click$y) 
        }) 
    } 
    shinyApp(u, s) 
    

    그리고 여기 click_info와 결과 반짝 응용 프로그램의 스크린 샷은 다음과 같습니다 :

    • 그런 다음

이 코드입니다 플롯에서 클릭 정보를 반향

enter image description here

+0

답장을 보내 주셔서 감사합니다. 네가 가진 UI가 같아 보인다. nearPoints를 사용하고있는 것을 보지 못합니다. 원래 플롯 (출력 $ 플롯)은 igraph를 기반으로합니다. 이 경우 클릭 정보를 검색하는 방법은 무엇입니까? – Kenny