Aggiungi colori al tuo grafico: input colore
Il pacchetto colourpicker fornisce un input per il colore, disponibile tramite la funzione colourInput(). Anche se gli input colore non fanno parte del pacchetto shiny, si comportano come qualsiasi altro input.
Un input colore può avere molti argomenti che puoi esplorare, ma qui useremo solo quelli di base: inputId, label e value. L'argomento value accetta un colore da usare come valore iniziale. I colori possono essere specificati in diversi formati, ma il modo più semplice è usare i nomi dei colori in inglese come "red" o "yellow".
Questo esercizio fa parte del corso
Casi di studio: creare applicazioni web con Shiny in R
Istruzioni dell'esercizio
È fornito il codice della Shiny app dell'esercizio precedente. Il tuo compito è sostituire i pulsanti di opzione usati per selezionare un colore con un input colore. In particolare:
- Carica il pacchetto
colourpicker. - Trova la funzione UI che crea i pulsanti di opzione utilizzati per la selezione del colore e sostituiscila con un input colore (riga 12).
- L'input colore deve avere ID "color", un'etichetta "Point color" e il colore predefinito "blue".
Esercizio pratico interattivo
Prova a risolvere questo esercizio completando il codice di esempio.
# 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)