我正在设计一个颜色调色板,其渐变颜色与数字变量R的值匹配。
我有一个类似于这个值的向量。有负值,重复值和缺失值。
vec <- c(-1.17, -1.12, 0, 0.01, 0.01, NA, 0.01, -1.17, 1.2, 1.21, 1.35, 1.35, NA, NA)
我正在使用渐变颜色设计调色板,如下所示:
colnum <- seq(-1.5, 1.5, 0.01) # to define range of values
library(colorspace)
color <- diverge_hcl(length(colnum))[rank(colnum)] # the color pallette going from blue to red
现在,我真的陷入了最后一步。如何提取一个矩阵,我知道哪个值分配给哪种颜色?
以下是我的尝试:
values <- data.frame(unique(vec))
colnames(values) <- "colnum"
colpal <- data.frame(colnum, color)
colpal2 <- merge(values, colpal, by="colnum", all.x=TRUE)
colpal2
colnum color
1 -1.17 #6270AF
2 -1.12 #6B77B2
3 0.00 #E2E2E2
4 0.01 <NA>
5 1.20 <NA>
6 1.21 #AA5367
7 1.35 #9D3752
8 NA <NA>
为什么当它们属于唯一值时,我没有得到0.01和1.20的颜色值?
unique(vec)
[1] -1.17 -1.12 0.00 0.01 NA 1.20 1.21 1.35
编辑:我也尝试了这个选项,得到了相同的结果。
colpal[colpal$colnum %in% unique(vec), ]
colnum color
34 -1.17 #6270AF
39 -1.12 #6B77B2
151 0.00 #E2E2E2
272 1.21 #AA5367
286 1.35 #9D3752
有人可以解释一下我做错了什么吗?非常感谢!
答案 0 :(得分:1)
解决方案很简单as.character
。
colpal[colpal$colnum %in% as.character(unique(vec)), ]