web-dev-qa-db-ja.com

値のベクトルに応じて異なるプロット内のカラーポイント

Rのプロット関数を使用して、以下のプロットをプロットしています。これは、時間シフトのベクトル 'shiftTime'のプロットです。 〜3〜〜9の範囲の強度値の別のベクトル「強度」があります。これらの値に基づいてプロット内のポイントを色のグラデーションで色付けします。例では、実際にプロットされたポイントの値で色を見つけることができます。この場合、ベクトル 'shiftTime'の値です。対応する値が同じインデックス上にある限り、異なるベクトルを使用することも可能ですか?

My plot

43
Niek de Klein

ベース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

102
joran

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

19
ROLO

ベースRのジョランの答えに凡例を追加するには:

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

この例では、可愛さのためだけに「、cex = 0.8」を追加しています:

multicoloured plot including legend

17
purplemac