LoslegenKostenlos loslegen

Mach deinen Plot größer

Genauso wie Eingabefunktionen je nach Eingabetyp verschiedene Argumente haben können, verfügen auch Output-Platzhalterfunktionen über unterschiedliche Argumente, um ihr Aussehen oder Verhalten anzupassen.

Wenn du zum Beispiel in einer Shiny-App einen Plot mit plotOutput() anzeigst, ist die Standardhöhe des Plots 400 Pixel. Die Funktion plotOutput() hat einige Parameter, mit denen sich die Höhe oder Breite eines Plots ändern lässt.

Diese Übung ist Teil des Kurses

Fallstudien: Webanwendungen mit Shiny in R erstellen

Kurs anzeigen

Anleitung zur Übung

Der Code für die Shiny-App aus der letzten Übung ist gegeben. Deine Aufgabe ist es, den Plot zu vergrößern. Konkret:

  • 600 Pixel hoch und 600 Pixel breit. Du kannst in der Dokumentation zu plotOutput() nachsehen, welche Parameter du verwenden musst (Zeile 18).

Interaktive Übung

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

ui <- fluidPage(
  sidebarLayout(
    sidebarPanel(
      textInput("title", "Title", "GDP vs life exp"),
      numericInput("size", "Point size", 1, 1),
      checkboxInput("fit", "Add line of best fit", FALSE),
      colourInput("color", "Point color", value = "blue"),
      selectInput("continents", "Continents",
                  choices = levels(gapminder$continent),
                  multiple = TRUE,
                  selected = "Europe"),
      sliderInput("years", "Years",
                  min(gapminder$year), max(gapminder$year),
                  value = c(1977, 2002))
    ),
    mainPanel(
      # Make the plot 600 pixels wide and 600 pixels tall
      plotOutput("plot", ___, ___)
    )
  )
)

# Define the server logic
server <- function(input, output) {
  output$plot <- renderPlot({
    data <- subset(gapminder,
                   continent %in% input$continents &
                     year >= input$years[1] & year <= input$years[2])
    
    p <- ggplot(data, aes(gdpPercap, lifeExp)) +
      geom_point(size = input$size, col = input$color) +
      scale_x_log10() +
      ggtitle(input$title)
    
    if (input$fit) {
      p <- p + geom_smooth(method = "lm")
    }
    p
  })
}

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