Voeg kleuren toe aan je plot: kleurinvoer
De package colourpicker biedt een kleurinvoer, beschikbaar via de functie colourInput(). Hoewel kleurinvoer niet onderdeel is van de shiny-package, werkt het op dezelfde manier als andere inputs.
Een kleurinvoer kan veel verschillende argumenten hebben die je kunt verkennen, maar we gebruiken alleen de basisargumenten: inputId, label en value. Het argument value accepteert een kleur als beginwaarde. Kleuren kunnen op verschillende manieren worden opgegeven, maar de eenvoudigste is om gewoon Engelse kleurnamen te gebruiken, zoals "red" of "yellow".
Deze oefening maakt deel uit van de cursus
Casestudies: webapplicaties bouwen met Shiny in R
Oefeninstructies
De code voor de Shiny-app uit de vorige oefening is meegeleverd. Jouw taak is om de radioknoppen die worden gebruikt om een kleur te kiezen te vervangen door een kleurinvoer. Concreet:
- Laad de package
colourpicker. - Zoek de UI-functie die de radioknoppen maakt voor het kiezen van een kleur, en vervang die door een kleurinvoer (regel 12).
- De kleurinvoer moet ID "color" hebben, het label "Point color" en de standaardkleur "blue".
Interactieve oefening met praktijkervaring
Probeer deze oefening door deze voorbeeldcode aan te vullen.
# 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)