Pregunta Gradiente de n colores que van desde el color 1 y el color 2


A menudo trabajo con ggplot2 eso hace que los gradientes sean agradableshaga clic aquí para ver un ejemplo) Tengo una necesidad de trabajar en la base y creo scales se puede usar allí para crear gradientes de color también, pero estoy severamente alejado de cómo. El objetivo básico es generar una paleta de n colores que varíe de x color a y color. La solución necesita trabajar en la base sin embargo. Este fue un punto de partida, pero no hay lugar para ingresar una n.

 scale_colour_gradientn(colours=c("red", "blue"))

Estoy muy consciente de:

brewer.pal(8, "Spectral") 

de RColorBrewer. Estoy buscando más el enfoque similar a cómo ggplot2 maneja gradientes que dicen que tengo estos dos colores y quiero 15 colores en el camino. ¿Cómo puedo hacer eso?


75
2017-11-12 23:16


origen


Respuestas:


colorRampPalette podría ser tu amigo aquí:

colfunc <- colorRampPalette(c("black", "white"))
colfunc(10)
# [1] "#000000" "#1C1C1C" "#383838" "#555555" "#717171" "#8D8D8D" "#AAAAAA"
# [8] "#C6C6C6" "#E2E2E2" "#FFFFFF"

Y solo para mostrar que funciona:

plot(rep(1,10),col=colfunc(10),pch=19,cex=3)

enter image description here


125
2017-11-12 23:21



Solo para expandir la respuesta anterior colorRampPalettepuede manejar más de dos colores.

Entonces, para un look de tipo "mapa de calor" más expandido puedes ....

colfunc<-colorRampPalette(c("red","yellow","springgreen","royalblue"))
plot(rep(1,50),col=(colfunc(50)), pch=19,cex=2)

La imagen resultante:

enter image description here


37
2018-05-29 15:41



Pruebe lo siguiente:

color.gradient <- function(x, colors=c("red","yellow","green"), colsteps=100) {
  return( colorRampPalette(colors) (colsteps) [ findInterval(x, seq(min(x),max(x), length.out=colsteps)) ] )
}
x <- c((1:100)^2, (100:1)^2)
plot(x,col=color.gradient(x), pch=19,cex=2)

enter image description here


11
2018-02-26 16:04



La respuesta anterior es útil, pero en los gráficos, es difícil distinguir entre los gradientes más oscuros de negro. Una alternativa que encontré es usar gradientes de colores grises de la siguiente manera

palette(gray.colors(10, 0.9, 0.4))
plot(rep(1,10),col=1:10,pch=19,cex=3))

Más información sobre escala de grises aquí. 

Adicional 

Cuando utilicé el código anterior para diferentes colores como el azul y el negro, los degradados no eran tan claros. heat.colors() parece más útil.

Este documento tiene información más detallada y opciones. pdf


6
2017-09-24 11:30