我想表示在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值的工作,例如让他们黑颜色,也不是那么容易。 为了我。 有一个简单的方法来做到这一点,我俯瞰?
您应该使用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)])
你可以使用预定义的灰度颜色搭配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)
结果: