ComenzarEmpieza gratis

Añade colores a tu gráfico: entrada de color

El paquete colourpicker proporciona una entrada de color, disponible mediante la función colourInput(). Aunque las entradas de color no forman parte del paquete shiny, se comportan igual que cualquier otra entrada.

Una entrada de color puede tener muchos argumentos que puedes explorar, pero aquí usaremos solo los básicos: inputId, label y value. El argumento value acepta un color para usar como valor inicial. Los colores se pueden especificar en varios formatos, pero lo más sencillo es usar nombres de colores en inglés, como "red" o "yellow".

Este ejercicio forma parte del curso

Casos prácticos: crea aplicaciones web con Shiny en R

Ver curso

Instrucciones del ejercicio

Se proporciona el código de la app Shiny del ejercicio anterior. Tu tarea es sustituir los botones de opción que se usan para seleccionar un color por una entrada de color. En concreto:

  • Carga el paquete colourpicker.
  • Busca la función de la UI que crea los botones de opción para seleccionar un color y sustitúyela por una entrada de color (línea 12).
  • La entrada de color debe tener ID "color", una etiqueta "Point color" y un color predeterminado "blue".

Ejercicio interactivo práctico

Prueba este ejercicio y completa el código de muestra.

# 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)
Editar y ejecutar código