R使用值列表作为色标

时间:2013-02-14 22:18:18

标签: r colors plot scale

我想将变量的值表示为R中散点的点颜色。

x <- rnorm(100) + 5
y <- rnorm(100) + 5
plot(x, y)

在这里,我想使用变量作为着色的输入。但是,如果我尝试

plot(x, y, col = x)

我得到一些奇怪的东西,可能很明显。现在我可以得到我想要的东西:

x_norm = (x - min(x)) / (max(x) - min(x))
col_fun <- colorRamp(c("blue", "red"))
rgb_cols <- col_fun(x_norm)
cols <- rgb(rgb_cols, maxColorValue = 256)
plot(x, y, col = cols)

enter image description here

但这看起来有点复杂,并且为了让它使用NA或NaN值,例如通过将它们设为黑色作为颜色,并不是那么容易。为了我。有一种简单的方法可以做到这一点,我忽略了吗?

2 个答案:

答案 0 :(得分:8)

您应该使用cut将x分为间隔,使用colorRampPalette创建固定大小的调色板:

x <- rnorm(100) + 5
y <- rnorm(100) + 5
maxColorValue <- 100
palette <- colorRampPalette(c("blue","red"))(maxColorValue)
plot(x, y, col = palette[cut(x, maxColorValue)])

答案 1 :(得分:1)

您可以使用预定义的灰度颜色gray0,...,gray99,如下所示:

x <- rnorm(100) + 5
y <- rnorm(100) + 5
x.renormed <- floor(100*((x-min(x))/(diff(range(x))+1e-2)))
colors.grayscale <- paste("gray",x.renormed,sep="")
plot(x, y, col=colors.grayscale, bg=colors.grayscale,pch=21)

结果:

grayscale scatterplot