EmpezarEmpieza gratis

Representa los datos

Recuerda que los gráficos son objetos de salida y, como tales, se añaden a una app de Shiny usando las funciones plotOutput() + renderPlot(). La función de salida se añade a la UI para indicar dónde colocar el gráfico, y la función de render en el servidor es la responsable de generarlo.

Tu tarea es añadir a la app un gráfico de PIB per cápita frente a esperanza de vida. Los datos usados en el gráfico deben ser los mismos que se muestran en la tabla; es decir, el gráfico solo debe mostrar registros que coincidan con los filtros de entrada. El código dentro de renderPlot() no tiene acceso a variables definidas dentro de renderTable(), así que tendrás que copiar y reutilizar literalmente el mismo código. Más adelante aprenderemos cómo evitar esta duplicación.

Este ejercicio forma parte del curso

Casos prácticos: crea aplicaciones web con Shiny en R

Ver curso

Instrucciones del ejercicio

  • Añade a la UI un contenedor para la salida del gráfico con el ID "plot".
  • En el servidor, usa la función de render adecuada para crear el gráfico (línea 30).
  • Reutiliza el mismo código de filtrado de datos que usa la tabla de salida para los datos del gráfico (línea 32).

ejercicio interactivo práctico

Prueba este ejercicio completando este código de ejemplo.

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)
Editar y ejecutar código