Цвет точек на графике по-разному зависит от вектора значений - PullRequest
41 голосов
/ 30 марта 2012

Я строю график ниже, используя функцию графика R. Это график вектора сдвига времени сдвига во времени. У меня есть другой вектор «интенсивность» значений интенсивности от ~ 3 до ~ 9. Я хочу раскрасить свои точки на графике на основе этих значений с помощью цветового градиента. В примерах я могу найти цвет на значении фактических построенных точек, поэтому в этом случае значения вектора 'shiftTime'. Можно ли использовать другой вектор, если соответствующие значения находятся в одном индексе?

My plot

Ответы [ 3 ]

100 голосов
/ 30 марта 2012

Вот решение с использованием графики 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

18 голосов
/ 30 марта 2012

Решение с использованием 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

17 голосов
/ 24 мая 2016

Чтобы добавить легенду к ответу Джорана в базе R:

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

В этом примере добавляется ", cex = 0.8" только для красивости:

multicoloured plot including legend

...