Побудуйте графік
Пам'ятайте, що графіки — це вихідні об'єкти, тож їх додають до Shiny-застосунку за допомогою plotOutput() + renderPlot(). Функцію виводу додають до UI, щоб визначити місце для графіка, а функція рендерингу в коді сервера відповідає за його створення.
Ваше завдання — додати до застосунку графік «ВВП на душу населення» проти «очікуваної тривалості життя». Дані для графіка мають збігатися з тими, що відображаються в таблиці; тобто на графіку мають бути лише записи, які відповідають вхідним фільтрам. Код усередині renderPlot() не має доступу до змінних, визначених усередині renderTable(), тож вам доведеться буквально скопіювати й перевикористати той самий код. Згодом ми дізнаємося, як уникнути такого дублювання.
Ця вправа є частиною курсу
Case Studies: створення вебзастосунків із Shiny в R
Інструкції до вправи
- Додайте в UI місце для виводу графіка з ідентифікатором "plot".
- У сервері скористайтеся відповідною функцією рендерингу, щоб створити графік (рядок 30).
- Перевикористайте той самий код фільтрації даних, що й для вихідної таблиці, для даних графіка (рядок 32).
Інтерактивна практична вправа
Спробуйте виконати цю вправу, доповнивши цей зразок коду.
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)