Construir una paleta de colores con R
Ciència

Construir una paleta de colores con R

Uno de los problemas que tenemos los que trabajamos en diseño web o intentamos hacer infografias que mantengan una consistencia interna de colores, o queremos hacer presentaciones dignas de mención y que tengan cierta consistencia, pero que tenemos el sentido del gusto en colores de un gato de plastilina, es intentar conseguir una paleta de colores para nuestros proyectos.

Ya sea para construir una presentación de una gráfica de barras con colores consistentes entre ella, ya sea para utilizar los colores concordantes en una presentación.

Por ejemplo, quiero hacer una web cuyos menús y fondos oscilen entre el rojo (#FF0000) y el amarillo (#FFFF00), necesitaré una paleta de este estilo:

Rplot

Los colores de esta paleta podré seleccionar los que vea mejor para utilizarlos en cualquier programa de diseño gráfico y en los CSS de cualquier web, incluso puedo invocar una función de R que haga un gráfico y utilice esta paleta de colores personalizada.

Para conseguirla utilizo este script de R

Script paleta-degradado.R

  1. ###############################################
  2. ## Nombre: paleta-degradado.R
  3. ## color(RGB), color(RGB), Número -> Paleta
  4. ##
  5. ## Definición de variables:
  6. ##
  7. ## degradados es un número natural mayor a 2
  8. ## colori es un color en RGB
  9. ##
  10. ## Esta función construye una paleta de N colores
  11. ## degradados entre los colores, que puede ser
  12. ## luego utilizada por otras funciones y plots
  13. ##
  14. ## Ejemplo de uso:
  15. ##
  16. ## source("paleta-degradado.R")
  17. ##
  18. #################################################
  19.  
  20. library(grDevices)
  21.  
  22. ################################################
  23. ## Defino aquí mis variables libres
  24. # Lo hago mediante preguntas al usuario
  25. ################################################
  26.  
  27. ## color(1...4) es una String
  28. ## color(1...4) es una string que representa un color
  29. ## en hexadecimal, o bien una string que representa
  30. ## un color predefinido, por ejemplo "red"
  31.  
  32. print("Los colores han de tener forma hexadecimal, p.ej. #DD0000, o bien nombre, p.ej: red")
  33. color1 = readline("Define el primero de los colores ")
  34. while (color1 =="") color1 = readline("Por favor, define el primer color ")
  35.  
  36. color2 = readline("Define el segundo color ")
  37. while (color2 =="") color2 = readline("Por favor, define el segundo color ")
  38.  
  39. color3 = readline("Define el siguiente color (dejar en blanco si no se quiere utilizar) ")
  40. if (color3 =="") color3=NULL
  41.  
  42. color4 = readline("Define el siguiente color (dejar en blanco si no se quiere utilizar) ")
  43. if (color4 =="") color4=NULL
  44.  
  45.  
  46. ## Construyo la paleta original con los colores proporcionados
  47. colores.paleta= c(color1, color2, color3, color4)
  48.  
  49. ## Consigo el número de colores de la paleta original
  50. numcolors = length(colores.paleta)
  51.  
  52. ## degradados es un "Number"
  53. ## Es el número de degradados que necesito
  54.  
  55. degradados = readline("¿Cuántos colores quieres que tenga la paleta? ")
  56. degradados = as.numeric(unlist(strsplit(degradados, ",")))
  57. while (degradados < 2 | degradados > 50) degradados = readline("La respuesta ha de ser un número mayor o igual a 2 y menor a 50, ¿cuántos colores quieres que tenga la paleta? ")
  58.  
  59. #################################
  60. ## Ejecución de la función
  61. #################################
  62.  
  63. ## Creo una nueva paleta genérica basada en la original
  64. pal = colorRampPalette(colores.paleta)
  65.  
  66. ## Hago aparecer en la consola los colores que obtengo ##
  67. print ("Paleta completa de colores")
  68. print (pal(degradados))
  69.  
  70. ## Dibujo un plot en blanco para incluir los degradados ##
  71. plot(1:degradados,seq(1,10,length=degradados),type="n",xlab="",ylab="",main="Gráfica de degradados", axes=F)
  72.  
  73. ## Hago aparecer los colores degradados de uno en uno en el plot ##
  74. for (i in 1:degradados) rect(i-0.5,0,i+0.4999,11, col=pal(degradados)[i])
  75.  
  76. ## Incluyo una leyenda para hacer aparecer en el plot
  77. ## los colores utilizados de forma comprensible
  78. legend("topleft", legend=pal(i), fill=pal(i), text.col=pal(i), bg="#FFFFFF")

Otra forma de incluirlo es como función “degradado” que nos dará un output de una paleta de colores que pueda ser utilizada posteriormente, por ejemplo en un plot o en la creación de una nube de tags.

  1. ###############################################
  2. ## Nombre: degradado
  3. ## color(RGB), color(RGB), Número -&gt; Paleta
  4. ##
  5. ## Definición de variables:
  6. ##
  7. ## degradados es un número natural &gt; 2
  8. ## color1 es un color en RGB
  9. ## color2 es un color en RGB
  10. ##
  11. ## Esta función construye una paleta de N colores
  12. ## degradados entre los colores, que puede ser
  13. ## luego utilizada por otras funciones y plots
  14. ##
  15. ## Ejemplo de uso:
  16. ##
  17. # mipaleta = degradado ("#DD0000", "#FFFF00", 10)
  18. ##
  19. #################################################
  20. degradado = function (color1, color2, degradados)
  21. {
  22. library(grDevices)
  23. palete = colorRampPalette(c(color1, color2))
  24. palete (degradados)
  25. }

Ejemplo de aplicación de la función de degradado a otras aplicaciones de R.

Aplicando este degradado al final de la función diseñada para extraer la nube de tags de un usuario de twitter añadiendo las siguientes líneas de código:

  1. degradado = function (color1, color2, degradados)
  2. {
  3. library(grDevices)
  4. palete = colorRampPalette(c(color1, color2))
  5. palete (degradados)
  6. }
  7. mipaleta = degradado ("#DD0000", "#FFFF00", 10)
  8.  
  9. par(bg = "black") ## Establezco un fondo negro
  10. wordcloud(dm$word, dm$freq, random.order=FALSE, colors=mipaleta) ## construye la nube de tags

Consigo una presentación mucho más impactante de la nube de tags, francamente mucho mejor que la que se consigue con las paletas básicas.

trinitro-molon

Web semántica ¿Qué es esto?
software image
5 based on 1 votes
Nombre de la aplicación
Construir una paleta de colores con R
Sistema operativo
R (3.0.2)
Página donde está ubicada

Soc coordinador de la revista electrònica i xarxa de bloggers www.socialdemocracia.org, webmaster de la UGT de Catalunya i militant del PSC.

Deja un comentario