Adaugă un selector de continent: select input
Când există multe opțiuni din care utilizatorul poate alege, butoanele radio pot ocupa mult spațiu și s-ar putea să nu fie ideale. Select input-urile — cunoscute și ca „liste derulante" — pot fi folosite tot pentru a-i cere utilizatorului să aleagă o opțiune dintr-o listă, dar într-un mod mai compact. Cu un select input, toate opțiunile apar într-o listă derulantă, astfel încât poate fi folosit chiar și atunci când ai multe variante disponibile.
Similar cu butoanele radio, select input-urile au și ele parametrii choices și selected. În plus, select input-urile dispun de argumentul multiple, care, atunci când este setat la TRUE, permite utilizatorului să selecteze mai mult de o valoare.
Codul aplicației Shiny din exercițiul anterior este furnizat cu câteva modificări minore.
Acest exercițiu face parte din cursul
Studii de caz: Construirea aplicațiilor web cu Shiny în R
Instrucțiuni pentru exercițiu
- Adaugă un
selectInput()în UI cu ID-ul "continents" și eticheta "Continents", cu continentul implicit setat la "Europe".- Opțiunile din listă trebuie să fie toate continentele distincte care există în setul de date gapminder.
- Permite utilizatorului să selecteze mai multe continente simultan.
- Adaugă cod în server astfel încât să fie afișate doar datele pentru continentul selectat, prin filtrarea setului de date gapminder (linia 23).
Exercițiu interactiv practic
Încearcă acest exercițiu completând acest cod de exemplu.
ui <- fluidPage(
sidebarLayout(
sidebarPanel(
textInput("title", "Title", "GDP vs life exp"),
numericInput("size", "Point size", 1, 1),
checkboxInput("fit", "Add line of best fit", FALSE),
radioButtons("color", "Point color",
choices = c("blue", "red", "green", "black")),
# Add a continent dropdown selector
___(___, ___,
choices = levels(___),
multiple = ___,
selected = ___)
),
mainPanel(
plotOutput("plot")
)
)
)
# Define the server logic
server <- function(input, output) {
output$plot <- renderPlot({
# Subset the gapminder dataset by the chosen continents
data <- subset(gapminder,
___ %in% ___$continents)
p <- ggplot(data, aes(gdpPercap, lifeExp)) +
geom_point(size = input$size, col = input$color) +
scale_x_log10() +
ggtitle(input$title)
if (input$fit) {
p <- p + geom_smooth(method = "lm")
}
p
})
}
shinyApp(ui = ui, server = server)