2017-01-15 5 views
0

Ich verwende Rstudio und Shiny für das Projekt.Ändern Sie die Diagrammachsenwerte dynamisch aus dem Datenrahmen in Shiny

Ich habe eine Variable res definiert und es enthält Dataframe mit mehreren Zeilen und Spalten, dann mache ich ein Diagramm und seine x y und Farbe sind die Daten aus res Datenrahmen. Mein Problem ist, dass, wenn ich es ausführe, wenn ich schreibe, dass ich möchte, dass X-Achse Variablenwerte eingegeben werden (input$SelInp), bekomme ich nicht Dataframe-Werte, stattdessen bekomme ich nur Spaltennamen.

Wenn ich den Code ändern, um die Werte direkt aus dem Datenframe zu bekommen (res$some_column_name) bekomme ich die richtigen Werte.

ui.R

selectInput("SelInp", 
         label = "Choose one:", 
         choices = colnames(res) 
         ) 

server.R

output$plt = renderPlot({ 
        qplot(data = res, 
        x = input$SelInp, #this only returns a column name 
        y = res$loan_amnt, # this returns correct values from column loan_amt 
        ylab = "some y axis", 
        xlab = "some x axis", 
        main="Our Chart") 
        } 
        ) 

so, ich will in die Werte in input$SelInp dank bekommen Voraus

Antwort

3

Ich denke, der Grund ist, dass die selectInput ist Rückgabe des Spaltennamens als Zeichen. qplot erwartet eine Variable. Ich habe nicht überprüfen, ob qplot hat eine Option, Zeichen zu verwenden Skalen angeben, aber in ggplot aes_string funktioniert das:

ui.R

library(shiny) 
    library(ggplot2) 

    shinyUI(fluidPage(


     titlePanel("Old Faithful Geyser Data"), 


     sidebarLayout(
     sidebarPanel(
      selectInput("selectedCol", "Select colum for X axis", choices = colnames(mtcars), selected = colnames(mtcars)[1]) 
     ), 


     mainPanel(
      plotOutput("distPlot") 
     ) 
    ) 
    )) 

server.R

library(shiny) 
    library(ggplot2) 

    shinyServer(function(input, output) { 

     output$distPlot <- renderPlot({ 
      x_axis <- input$selectedCol 
      gg <- ggplot(mtcars, aes_string(x = x_axis, y = "hp", color = "cyl")) 
      gg <- gg + geom_point() 
      gg 

     }) 


    }) 

Lassen Sie mich wissen wenn das hilft.

+0

Vielen Dank @Valter, Ich habe es geschafft, Plot erfolgreich mit dem mitgelieferten 'ggplot' Beispiel neu zu erstellen und es ändert sich dynamisch, wie ich es wollte, aber ich kann immer noch nicht herausfinden, wie man' qplot' benutzt, da mein Beispiel –

+0

ist Froh, dass es geholfen hat. Ich bin mir sicher, dass es eine Lösung mit qplot gibt. Ich werde es während der Woche anschauen und es euch wissen lassen. –

Verwandte Themen