2011-12-21 68 views
5

Tengo una pregunta sobre el paquete gplots. Quiero utilizar la función heatmap.2 y por lo tanto quiero cambiar mi punto simétrico de clave de color de 0 a 1. Normalmente, cuando symkey=TRUE y se utiliza el col=redgreen(), se crea una barra de colores donde los colores se gestionan de esta manera:R: heatmap.2 cambiar la clave de color

red = -2 to -0.5 
black=-0.5 to 0.5 
green= 0.5 to 2 

Ahora quiero crear una barra de colores de esta manera:

red= -1 to 0.8 
black= 0.8 to 1.2 
green= 1.2 to 3 

es algo como esto posible?

¡Gracias!

Respuesta

9

Si mira the heatmap.2 help file, parece que desea el argumento breaks. Desde el archivo de ayuda:

breaks (opcional) O bien un vector numérico que indica los puntos de división para binning x en colores, o un número entero de puntos de ruptura que se utilizará, en cuyo caso los puntos de ruptura se espaciados igualmente entre mínimo (x) y máximo (x)

Por lo tanto, utilice breaks para especificar los puntos de corte para cada color. ej .:

library(gplots) 

# make up a bunch of random data from -1, -.9, -.8, ..., 2.9, 3 
# 10x10 
x = matrix(sample(seq(-1,3,by=.1),100,replace=TRUE),ncol=10) 

# plot. We want -1 to 0.8 being red, 0.8 to 1.2 being black, 1.2 to 3 being green. 
heatmap.2(x, col=redgreen, breaks=c(-1,0.8,1.2,3)) 

El bit crucial es la breaks=c(-1,0.8,1.2,3) siendo sus puntos de corte.

+0

Gracias Mathematical.coffee. ¿También hay una manera de crear una mayor superposición con los colores? ¡Normalmente uso rojo verde (75) que crea 75 colores! – Lisann

+0

Al igual que en, ¿quiere que varíen de -1 a 0.8 tonos de rojo, de 0.8 a 1.2 tonos de negro (!), De 1.2 a 3 distintos tonos de verde? Puedes intentar agregar más descansos a tus 'descansos'. p.ej. 'c (seq (-1,0.8, longitud = 5), seq (0.8,1.2, longitud = 5), seq (1.2,3, longitud = 5)' para tener aproximadamente 5 tonos para cada pausa y así sucesivamente. tienes que tener el mismo número de tonos para cada descanso ya que 'rojo verdoso' escala linealmente de rojo a verde: si es irregular obtendrás trozos de colores que se arrastran el uno al otro. Pero como 'rojo verdoso 'es un gradiente de color gradual, ¿cómo? ¿Dirá cuando el rojo se detenga y el negro comience, etc.? –

+0

¡Gracias! ¡Esto era exactamente lo que necesitaba! :) – Lisann

Cuestiones relacionadas