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?
38
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)
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
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")
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
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:
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
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