LoslegenKostenlos loslegen

Die Daten plotten

Erinnere dich: Plots sind Output-Objekte und werden daher mit den Funktionen plotOutput() + renderPlot() in eine Shiny-App eingebunden. Die Output-Funktion kommt in die UI und legt fest, wo der Plot erscheint, und die Render-Funktion im Server-Code ist für die Erstellung des Plots zuständig.

Deine Aufgabe ist es, einen Plot von BIP pro Kopf vs. Lebenserwartung zur App hinzuzufügen. Die Daten im Plot sollen dieselben sein wie in der Tabelle; das heißt, der Plot soll nur Einträge zeigen, die zu den Eingabefiltern passen. Der Code innerhalb von renderPlot() hat keinen Zugriff auf Variablen, die in renderTable() definiert wurden, daher musst du denselben Code tatsächlich kopieren und wiederverwenden. Später lernst du, wie sich diese Duplizierung vermeiden lässt.

Diese Übung ist Teil des Kurses

Fallstudien: Webanwendungen mit Shiny in R erstellen

Kurs anzeigen

Anleitung zur Übung

  • Füge in der UI einen Platzhalter für einen Plot-Output mit der ID "plot" hinzu.
  • Verwende im Server die passende Render-Funktion, um den Plot zu erstellen (Zeile 30).
  • Nutze für die Plot-Daten denselben Datenfilter-Code wie für die Output-Tabelle (Zeile 32).

Interaktive Übung

Vervollständige den Beispielcode, um diese Übung erfolgreich abzuschließen.

ui <- fluidPage(
  h1("Gapminder"),
  sliderInput(inputId = "life", label = "Life expectancy",
              min = 0, max = 120,
              value = c(30, 50)),
  selectInput("continent", "Continent",
              choices = c("All", levels(gapminder$continent))),
  # Add a plot output
  ___(___),
  tableOutput("table")
)

server <- function(input, output) {
  output$table <- renderTable({
    data <- gapminder
    data <- subset(
      data,
      lifeExp >= input$life[1] & lifeExp <= input$life[2]
    )
    if (input$continent != "All") {
      data <- subset(
        data,
        continent == input$continent
      )
    }
    data
  })

  # Create the plot render function  
  output$plot <- ___({
    # Use the same filtered data code that the table uses
    data <- ___
            ___
            ___
    ggplot(data, aes(gdpPercap, lifeExp)) +
      geom_point() +
      scale_x_log10()
  })
}

shinyApp(ui, server)
Code bearbeiten und ausführen