2012-03-30 11 views
34

Estoy trazando la gráfica a continuación usando la función de trazado de R. Es un diagrama de un vector 'shiftTime' de cambio en el tiempo. Tengo otra 'intensidad' de vector de los valores de intensidad que van desde ~ 3 a ~ 9. Quiero colorear mis puntos en la trama en función de esos valores con un degradado de color. Los ejemplos que puedo encontrar color en el valor de los puntos trazados reales, por lo que en este caso los valores del vector 'shiftTime'. ¿También es posible usar un vector diferente, siempre y cuando los valores correspondientes estén en el mismo índice?Colorea los puntos en una trama de forma diferente según un vector de valores

My plot

Respuesta

89

Aquí es una solución utilizando gráficos de base R:

#Some sample data 
x <- runif(100) 
dat <- data.frame(x = x,y = x^2 + 1) 

#Create a function to generate a continuous color palette 
rbPal <- colorRampPalette(c('red','blue')) 

#This adds a column of color values 
# based on the y values 
dat$Col <- rbPal(10)[as.numeric(cut(dat$y,breaks = 10))] 

plot(dat$x,dat$y,pch = 20,col = dat$Col) 

enter image description here

+4

Esto es grande! ¿Cómo mostraría la leyenda con eso? –

16

solución utilizando ggplot2:

library(ggplot2) 

#Some sample data 
x <- sort(runif(100)) 
dat <- data.frame(x = x,y = x^2 + 1) 
# Some external vector for the color scale 
col <- sort(rnorm(100)) 

qplot(x, y, data=dat, colour=col) + scale_colour_gradient(low="red", high="blue") 

plot

12

Para añadir una leyenda a la respuesta de Joran en la base R:

legend("topleft",title="Decile",legend=c(1:10),col =rbPal(10),pch=20) 

este ejemplo se agrega", CeX = 0,8" sólo por lo bonito:

multicoloured plot including legend

+0

¿cómo harías de esta leyenda una barra de fundido de color continua? – colin

+0

¿Cómo se usan los valores correctos en la leyenda del argumento? (no leyenda = c (1:10)) ?? – xhie

Cuestiones relacionadas