2017-04-13 2 views
2

Je suis en train de faire un intrigue interactive en brillant. Quand je clique sur l'intrigue originale, je veux montrer des informations sur le point que j'ai cliqué dans un fluidRow séparé (une autre table/intrigue). J'ai coulé un exemple en ligne pour configurer mon interface utilisateur dans laquelle la variable d'entrée click est appelée "plot_click". Cependant, je ne peux pas trouver cette entrée dans mon serveur (quand je tape l'entrée $ dans le serveur, la liste des variables d'entrée n'a pas plot_click). Le code est indiqué ci-dessous:intrigue brillant brillant ne peut pas trouver l'entrée de clic dans le serveur

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")) 
    ) 

    ) 
) 

)) 

Et le code du serveur appelant l'entrée de clic ci-dessous: dans la dernière ligne

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

Pour mettre en évidence, la variable « entrée plot_click de $ » ne peut être trouvé.

+0

Besoin de plus de code pour comprendre ce que vous faites. Il n'y a aucun indice sur la façon dont vous êtes arrivé avec 'unlist (graph_react() [4])' par exemple. –

+0

Merci pour votre réponse. Le premier argument de nearPoints est une dataframe. Ici, cette fonction réactive suppose de retourner ce type de données. Parce que la fonction renvoie 4 iterms comme une liste, j'ai utilisé unlist pour récupérer le dernier. Le problème ici est "input $" ne peut pas trouver "plot_click" comme option de saisie. – Kenny

Répondre

1

Eh bien, j'ai inventé un petit exemple que j'espère proche de vous, qui vous montre comment cela fonctionne.

  • créé certaines variables (x, y, z), et certaines fonctions analytiques (sin, cos, exp) et gerated une grille de données avec les
  • Fait un tracé d'eux sur la base des variables d'entrée sélectionné dans votre fonction ui.
    • Puis écho l'info clic à partir de cette parcelle

Voici le code:

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) 

Et voici une capture d'écran de l'application brillante résultante avec click_info:

enter image description here

+0

Merci pour votre réponse. Il semble que vous ayez la même interface utilisateur. Je ne vois pas que vous utilisez NearPoints. L'intrigue originale (sortie $ plot) est basée sur igraph. Dans ce cas, comment récupérer les informations de clic? – Kenny