Punkty kolorów na wykresie różnie w zależności od wektora wartości

Kreślę wykres poniżej używając funkcji wykresu R. Jest to wykres wektora "czas przesunięcia" przesunięcia w czasie. Mam inny wektor "intensywności" o wartościach intensywności od ~3 do ~9. Chcę pokolorować moje punkty na wykresie na podstawie tych wartości gradientem kolorów. Przykłady mogę znaleźć kolor na wartości rzeczywistych punktów wykreślonych, więc w tym przypadku wartości wektora "shiftTime". Czy możliwe jest również użycie innego wektora, o ile odpowiednie wartości są na ten sam indeks?

Moja działka

Author: Niek de Klein, 2012-03-30

3 answers

Oto rozwiązanie wykorzystujące grafikę 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)

Tutaj wpisz opis obrazka

 96
Author: joran,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2012-03-30 16:33:18

Rozwiązanie za pomocą 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")

wykreśl

 17
Author: ROLO,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2012-03-30 19:02:42

Aby dodać legendę do odpowiedzi jorana w bazie R:

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

Ten przykład dodaje ", cex=0.8 " tylko dla prettiness:

wielobarwna fabuła wraz z legendą

 13
Author: purplemac,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2016-05-24 15:19:58