ÎncepețiÎncepe gratuit

Vizualizează datele într-un grafic

Reține că graficele sunt obiecte de tip output și, ca atare, se adaugă într-o aplicație Shiny folosind funcțiile plotOutput() + renderPlot(). Funcția de output se adaugă în UI pentru a stabili unde va fi afișat graficul, iar funcția de randare din codul serverului este responsabilă de generarea acestuia.

Sarcina ta este să adaugi un grafic al PIB-ului pe cap de locuitor față de speranța de viață în aplicație. Datele folosite în grafic trebuie să fie aceleași cu cele afișate în tabel, adică graficul ar trebui să afișeze doar înregistrările care corespund filtrelor selectate. Codul din interiorul funcției renderPlot() nu are acces la variabilele definite în renderTable(), așa că va trebui să copiezi și să reutilizezi același cod. Ulterior vom învăța cum să evităm această duplicare.

Acest exercițiu face parte din cursul

Studii de caz: Construirea aplicațiilor web cu Shiny în R

Vezi cursul

Instrucțiuni pentru exercițiu

  • Adaugă un placeholder pentru output-ul graficului în UI, cu ID-ul "plot".
  • În server, folosește funcția de randare corespunzătoare pentru a crea graficul (linia 30).
  • Reutilizează același cod de filtrare a datelor folosit de tabelul de output pentru datele graficului (linia 32).

Exercițiu interactiv practic

Încearcă acest exercițiu completând acest cod de exemplu.

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)
Editează și rulează codul