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

###############################################
## Nombre: paleta-degradado.R
## color(RGB), color(RGB), Número -> Paleta
##
## Definición de variables:
##
## degradados es un número natural mayor a 2
## colori es un color en RGB 
## 
## Esta función construye una paleta de N colores 
## degradados entre los colores, que puede ser
## luego utilizada por otras funciones y plots
##
## Ejemplo de uso:
##
## source("paleta-degradado.R")
##
#################################################

library(grDevices)

################################################
## Defino aquí mis variables libres
# Lo hago mediante preguntas al usuario
################################################

## color(1...4) es una String
## color(1...4) es una string que representa un color
## en hexadecimal, o bien una string que representa
## un color predefinido, por ejemplo "red"

print("Los colores han de tener forma hexadecimal, p.ej. #DD0000, o bien nombre, p.ej: red")
color1 =  readline("Define el primero de los colores ") 
while (color1 =="") color1 =  readline("Por favor, define el primer color ") 

color2 =  readline("Define el segundo color ") 
while (color2 =="") color2 =  readline("Por favor, define el segundo color ") 

color3 =  readline("Define el siguiente color (dejar en blanco si no se quiere utilizar) ") 
if (color3 =="") color3=NULL

color4 =  readline("Define el siguiente color (dejar en blanco si no se quiere utilizar) ") 
if (color4 =="") color4=NULL


## Construyo la paleta original con los colores proporcionados
colores.paleta= c(color1, color2, color3, color4)

## Consigo el número de colores de la paleta original
numcolors =  length(colores.paleta)

## degradados es un "Number"
## Es el número de degradados que necesito

degradados =  readline("¿Cuántos colores quieres que tenga la paleta? ")
degradados = as.numeric(unlist(strsplit(degradados, ",")))
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? ")

#################################
## Ejecución de la función
#################################

## Creo una nueva paleta genérica basada en la original
pal = colorRampPalette(colores.paleta)

## Hago aparecer en la consola los colores que obtengo ##
print ("Paleta completa de colores")
print (pal(degradados))

## Dibujo un plot en blanco para incluir los degradados ##
plot(1:degradados,seq(1,10,length=degradados),type="n",xlab="",ylab="",main="Gráfica de degradados", axes=F)

## Hago aparecer los colores degradados de uno en uno en el plot ##
for (i in 1:degradados) rect(i-0.5,0,i+0.4999,11, col=pal(degradados)[i])

## Incluyo una leyenda para hacer aparecer en el plot
## los colores utilizados de forma comprensible
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.

###############################################
## Nombre: degradado
## color(RGB), color(RGB), Número -&gt; Paleta
##
## Definición de variables:
##
## degradados es un número natural &gt; 2
## color1 es un color en RGB 
## color2 es un color en RGB
## 
## Esta función construye una paleta de N colores 
## degradados entre los colores, que puede ser
## luego utilizada por otras funciones y plots
##
## Ejemplo de uso:
##
# mipaleta = degradado ("#DD0000", "#FFFF00", 10)
##
#################################################
degradado = function (color1, color2, degradados)
{
library(grDevices)
palete = colorRampPalette(c(color1, color2))
palete (degradados)
}

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:

degradado = function (color1, color2, degradados)
{
library(grDevices)
palete = colorRampPalette(c(color1, color2))
palete (degradados)
}
mipaleta = degradado ("#DD0000", "#FFFF00", 10)

par(bg = "black") ## Establezco un fondo negro 
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