Colour points in a plot differently depending on a vector of values

我的梦境 提交于 2019-11-26 09:16:19

问题


I\'m plotting the plot below using R\'s plot function. It is a plot of a vector \'shiftTime\' of shift in time. I have another vector \'intensity\' of the intensity values ranging from ~3 to ~9. I want to color my points in the plot based on those values with a color gradient. The examples I can find color on the value of the actual plotted points, so in this case the values of the vector \'shiftTime\'. Is it also possible to use a different vector, as long as the corresponding values are on the same index?

\"My


回答1:


Here's a solution using base R graphics:

#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)




回答2:


Solution using 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")




回答3:


To add a legend to joran's answer in base R:

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

This example adds ",cex=0.8" just for prettiness:



来源:https://stackoverflow.com/questions/9946630/colour-points-in-a-plot-differently-depending-on-a-vector-of-values

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!