值色阶R中,使用列表(R use list of values as color scale)

2019-08-16 23:55发布

我想表示在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值的工作,例如让他们黑颜色,也不是那么容易。 为了我。 有一个简单的方法来做到这一点,我俯瞰?

Answer 1:

您应该使用cut为devide 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)])


Answer 2:

你可以使用预定义的灰度颜色搭配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)

结果:



文章来源: R use list of values as color scale