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