Dodaj kolory do wykresu: wybór koloru
Pakiet colourpicker udostępnia kontrolkę wyboru koloru za pomocą funkcji colourInput(). Choć wybór koloru nie jest częścią pakietu shiny, działa dokładnie tak samo jak każdy inny element wejściowy.
Kontrolka wyboru koloru obsługuje wiele argumentów, które możesz samodzielnie zbadać – na razie skupimy się jednak tylko na podstawowych: inputId, label i value. Argument value przyjmuje kolor, który będzie używany jako wartość domyślna. Kolory można podawać w różnych formatach, ale najprostszym sposobem jest użycie angielskich nazw kolorów, takich jak "red" czy "yellow".
To ćwiczenie jest częścią kursu
Studia przypadków: tworzenie aplikacji webowych w Shiny w R
Instrukcje do ćwiczenia
Poniżej znajdziesz kod aplikacji Shiny z poprzedniego ćwiczenia. Twoim zadaniem jest zastąpienie przycisków radiowych służących do wyboru koloru kontrolką wyboru koloru. Konkretnie:
- Wczytaj pakiet
colourpicker. - Znajdź funkcję UI, która tworzy przyciski radiowe do wyboru koloru, i zastąp ją kontrolką wyboru koloru (wiersz 12).
- Kontrolka wyboru koloru powinna mieć ID "color", etykietę "Point color" oraz domyślny kolor "blue".
Interaktywne ćwiczenie praktyczne
Spróbuj tego ćwiczenia, uzupełniając ten przykładowy kod.
# 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)