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
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)