如何修复矩阵中数字的颜色

时间:2018-05-28 07:10:34

标签: r colormap

目前我尝试制作多个可视化,其中矩阵中的数字必须在图像中获得某种(固定)颜色。

由于我无法找到真正为固定数字指定颜色的方法,这导致我比我想象的更麻烦。

问题显示在以下示例中:

假设我们定义以下颜色与以下数字相关联

cols <- c(
 '0' = "#FFFFFF",
 '1' = "#99FF66",
 '2' = "#66FF33",
 '3' = "#33CC00",
 '4' = "#009900" 
)
image(as.matrix(d), col=cols)

现在,如果我们想象下面的矩阵似乎都很好

d<-read.table(text="
0  1  0  3
3  2  1  4
4  1  0  2
3  3  0  1")
image(as.matrix(d), col=cols)

然而,如果可视化以下矩阵,则问题变得清晰

d<-read.table(text="
1  1  1  3
3  2  1  4
4  1  2  2
3  3  2  1")

image(as.matrix(d), col=cols)

我们应该跳过白色(“#FFFFFF”),因为数字0不存在。然而,无论如何R选择使用白色(“#FFFFFF”)并将其与数字1相关联,而不是“#009900”。

为了保持可视化的一致性,所有图像的颜色与相同的数字保持关联是非常重要的,那么我该如何实现呢?

2 个答案:

答案 0 :(得分:3)

删除矩阵中不重要的颜色值:

image(as.matrix(d), col=cols[names(cols)%in%unlist(d)])
正如名称所示,

unlist仅适用于列表。 如果d已经是矩阵,只需使用c(d)

答案 1 :(得分:0)

感谢Andre的建议,我可以用一种相当简洁的方式解决它

d<-as.matrix(read.table(text="
1  1  1  3
3  2  1  4
4  1  1  2
3  3  1  1"))

cols <- c(
'0' = "#FFFFFF",
'1' = "#99FF66",
'2' = "#66FF33",
'3' = "#33CC00",
'4' = "#009900"
)

image(as.matrix(d), col= cols[ names(cols) %in% d ])