Punti di colore in una trama diversa a seconda di un vettore di valori

Sto tracciando la trama qui sotto usando la funzione di trama di R. È una trama di un vettore “shiftTime” di spostamento nel tempo. Ho un’altra “intensità” vettoriale dei valori di intensità che vanno da ~ 3 a ~ 9. Voglio colorare i miei punti nel grafico basato su quei valori con un gradiente di colore. Gli esempi posso trovare il colore sul valore dei veri punti tracciati, quindi in questo caso i valori del vettore ‘shiftTime’. È anche ansible utilizzare un vettore diverso, purché i valori corrispondenti si trovino sullo stesso indice?

La mia trama

Ecco una soluzione che utilizza la grafica di 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) 

inserisci la descrizione dell'immagine qui

Soluzione utilizzando 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") 

tracciare

Per aggiungere una legenda alla risposta di joran nella base R:

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

Questo esempio aggiunge “, cex = 0.8” solo per la bellezza:

trama multicolore con leggenda