Colores divergentes en DT

shiny
webapps
Autor/a

Elio Lagunes-Díaz

Fecha de publicación

3 de febrero de 2023

La tabla que se generaba para la aplicación de entrenamiento para contadores de migración solamente indicaba numéricamente el estimado del observador contra la cantidad real de aves, tal como 80/120; para hacerla más visual se necesitaba colorearla, con dos tonos distintos: uno para la subestimación y otro para la sobreestimación, así como distintas intensidades de estos dos tonos para representar la magnitud del error.

DT es una librería genial que permite crear tablas interactivas y con mucha manipulación del formato, así como agregar fácilmente un botón para descarga. En este caso la función que nos interesa es colorear una columna con una escala que representa a otra (pues nuestros valores “80/120” son tipo character

rango = range(data[,c("nsc_tv", "nsc_sw", "nsc_bw")])
brks <- seq(rango[1], rango[2], by = diff(rango)/5 ) 

# creamos la paleta
clrs = rev(RColorBrewer::brewer.pal(7, "RdBu"))
data = data |> dplyr::select(-c(2:9, ))


datatable(data, 
          options = list( 
          columnDefs = list(list(visible=FALSE, targets = 8:11 ) # aquí quitamos las que no queremos mostrar
                                 ))) |> 
  formatStyle("sc_tv", "nsc_tv", backgroundColor = styleInterval(brks, clrs)) |>
  formatStyle("sc_bw", "nsc_bw", backgroundColor = styleInterval(brks, clrs)) |>
  # colorear una col por el val de otra
  formatStyle("sc_sw", "nsc_sw", backgroundColor = styleInterval(brks, clrs))