5

我想将变量的值表示为 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)

在此处输入图像描述

但这似乎有点复杂,并且要使其与 NA 或 NaN 值一起使用,例如通过将它们赋予黑色作为颜色,并不是那么容易。为了我。有没有一种我忽略的简单方法可以做到这一点?

4

2 回答 2

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)])
于 2013-02-14T22:23:35.890 回答
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)

结果:

灰度散点图

于 2013-02-15T15:55:22.440 回答