2017-12-16 4 views
1

Also hier ist mein Code unten, dass ich nicht Shiny bekommen kann, um die Daten in der Grafik zu zeigen. Es zeigt nur den Spaltennamen und nicht die Daten an. Irgendwelche Vorschläge?ggplot2 Keine Eingabe-ID in Shiny

Die Daten werden in der Grafik nur in einer Reihe angezeigt, anstatt korrekt geplottet zu werden. Ich habe versucht, die Beispiele im R Shiny Spickzettel durchzugehen, aber kein Glück.

budget_d <- tribble(~opdate, ~r.pd.bdgt, ~r.pt.bdgt, ~r.au.bdgt, 
        ymd("2018-05-31"), 81, 73, 65, 
        ymd("2018-06-11"), 86, 79, 69, 
        ymd("2018-06-30"), 89, 76, 67, 
        ymd("2018-07-21"), 82, 72, 65, 
        ymd("2018-08-01"), 81, 73, 63, 
        ymd("2018-08-08"), 83, 75, 67, 
        ymd("2018-11-17"), 84, 74, 66) 

require(shiny) 
require(tidyverse) 
require(lubridate) 


ui <- fluidPage(
    dateRangeInput(
        inputId = "period", 
        label = "Choose a Period", 
        start = ymd("2018-04-01"), 
        end = ymd("2018-09-01"), 
        min = ymd("2018-01-01"), 
        max = ymd("2018-12-31") 
        ), 
    selectInput(
        inputId = "elements", 
        label = "Select an Element", 
        choices = c("Pd Recovery" = "r.pd.bdgt", 
           "Pt Recovery" = "r.pt.bdgt", 
           "Au Recovery" = "r.au.bdgt") 
    ), 
    plotOutput(
     outputId = "hist" 
    ) 
) 



server <- function(input, output){ 
    output$hist <- renderPlot({ 
     ggplot(budget_d, aes(opdate, input$elements)) + 
        geom_point() + 
        xlim(input$period) 
    }) 
} 



shinyApp(ui = ui, server = server) 
+0

Bitte geben Sie * Sample * Daten innerhalb der Frage, nicht als Link, aus mindestens zwei Gründen: Links können sterben, diese Frage nicht nachvollziehbar; und einige Leute zögern, auf unschuldig aussehende Links zu klicken, um beliebige Dateien herunterzuladen. Selbst wenn es "offensichtlich" eine saubere/sichere Datei ist, ist es immer noch eine Ebene der Indirektion, die wir faulen Leute (und vielleicht auch andere Beantworter) wahrscheinlich nicht nehmen werden. – r2evans

+2

Guter Punkt. Ich habe die Frage bearbeitet, um Ihre Bedenken zu berücksichtigen. Ich schätze die Köpfe hoch. –

Antwort

1

Siehe here. input$elements ist Variable, und wenn Sie eine Variable verwenden möchten, sollten Sie aes_string anstelle von aes verwenden. Arbeitsbeispiel mit Beispieldaten:

require(shiny) 
require(tidyverse) 
require(lubridate) 
library(ggplot2) 



ui <- fluidPage(
    selectInput(
    inputId = "elements", 
    label = "Select an Element", 
    choices = colnames(iris) 
), 
    plotOutput(
    outputId = "hist" 
) 
) 



server <- function(input, output){ 
    output$hist <- renderPlot({ 

    # This works. 
    ggplot(iris, aes_string("Sepal.Length", input$elements)) + 
     geom_point() 

    # This does not work. 
    # ggplot(iris, aes(Sepal.Length, input$elements)) + 
    # geom_point() 
    }) 
} 

shinyApp(ui,server) 

Hoffe, das hilft!

+0

Brilliant! Vielen Dank! –

Verwandte Themen