2017-04-13 10 views
2

私は光沢のあるインタラクティブなプロットを作ろうとしています。元のプロットをクリックすると、別のfluidRow(別のテーブル/プロット)でクリックしたポイントに関する情報を表示します。私はクリック入力変数が "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の第1引数はデータフレームです。ここで、このリアクティブ関数は、この種のデータフレームを返すと仮定します。関数はリストとしてitermsを返すので、最後のリストを取得するためにunlistを使いました。ここでの問題は "入力$"が入力オプションとして "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

関連する問題