Adaugă culori în grafic: selector de culoare
Pachetul colourpicker oferă un selector de culoare, disponibil prin funcția colourInput(). Deși selectoarele de culoare nu fac parte din pachetul shiny, funcționează la fel ca orice alt tip de input.
Un selector de culoare poate primi mai multe argumente pe care le poți explora, însă vom folosi doar argumentele de bază: inputId, label și value. Argumentul value acceptă o culoare care va fi folosită ca valoare inițială. Culorile pot fi specificate în mai multe formate, dar cel mai simplu este să folosești direct denumiri de culori în engleză, cum ar fi "red" sau "yellow".
Acest exercițiu face parte din cursul
Studii de caz: Construirea aplicațiilor web cu Shiny în R
Instrucțiuni pentru exercițiu
Codul pentru aplicația Shiny din exercițiul anterior este deja disponibil. Sarcina ta este să înlocuiești butoanele radio folosite pentru selectarea culorii cu un selector de culoare. Mai exact:
- Încarcă pachetul
colourpicker. - Găsește funcția UI care creează butoanele radio pentru selectarea culorii și înlocuiește-o cu un selector de culoare (linia 12).
- Selectorul de culoare trebuie să aibă ID-ul "color", eticheta "Point color" și culoarea implicită "blue".
Exercițiu interactiv practic
Încearcă acest exercițiu completând acest cod de exemplu.
# Load the colourpicker package
___
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),
# Replace the radio buttons with a color input
radioButtons("color", "Point color",
choices = c("blue", "red", "green", "black")),
selectInput("continents", "Continents",
choices = levels(gapminder$continent),
multiple = TRUE,
selected = "Europe"),
sliderInput("years", "Years",
min(gapminder$year), max(gapminder$year),
value = c(1977, 2002))
),
mainPanel(
plotOutput("plot")
)
)
)
# Define the server logic
server <- function(input, output) {
output$plot <- renderPlot({
data <- subset(gapminder,
continent %in% input$continents &
year >= input$years[1] & year <= input$years[2])
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)