Kom igångKom igång gratis

Visualisera datan

Kom ihåg att diagram är utdataobjekt och läggs till i en Shiny-app med funktionerna plotOutput() och renderPlot(). Utdatafunktionen placeras i UI:t för att bestämma var diagrammet ska visas, och renderfunktionen i serverkoden ansvarar för att generera diagrammet.

Din uppgift är att lägga till ett diagram över BNP per capita mot förväntad livslängd i appen. Datan i diagrammet ska vara samma som visas i tabellen – det vill säga att endast poster som matchar de valda filtren ska visas. Koden inuti renderPlot() har inte tillgång till variabler som definierats inuti renderTable(), så du måste kopiera och återanvända samma kod. Längre fram i kursen lär du dig hur du undviker denna dubblering.

Den här övningen är en del av kursen

Fallstudier: Bygg webbapplikationer med Shiny i R

Visa kurs

Övningsinstruktioner

  • Lägg till en platshållare för ett diagramutdata i UI:t med ID:t "plot".
  • Använd lämplig renderfunktion i servern för att skapa diagrammet (rad 30).
  • Återanvänd samma datafiltreringskod som tabellutdatan använder för diagramdatan (rad 32).

Interaktiv övning med praktiskt arbete

Testa den här övningen genom att slutföra den här exempelkoden.

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)
Redigera och kör kod