web-dev-qa-db-fra.com

Les points de couleur dans un tracé diffèrent selon un vecteur de valeurs

Je trace le tracé ci-dessous en utilisant la fonction de tracé de R. Il s'agit d'un tracé d'un vecteur "shiftTime" de décalage dans le temps. J'ai un autre vecteur "intensité" des valeurs d'intensité allant de ~ 3 à ~ 9. Je veux colorer mes points dans le tracé en fonction de ces valeurs avec un dégradé de couleurs. Les exemples que je peux trouver de la couleur sur la valeur des points tracés réels, donc dans ce cas les valeurs du vecteur 'shiftTime'. Est-il également possible d'utiliser un vecteur différent, tant que les valeurs correspondantes sont sur le même indice?

My plot

43
Niek de Klein

Voici une solution utilisant des graphiques 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

102
joran

Solution utilisant 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

19
ROLO

Pour ajouter une légende à la réponse de Joran dans la base R:

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

Cet exemple ajoute ", cex = 0.8" juste pour la beauté:

multicoloured plot including legend

17
purplemac