【发布时间】:2016-07-24 22:28:22
【问题描述】:
我正在将数字矩阵转换为颜色矩阵;但是,颜色显示不正确,例如,颜色矩阵显示的颜色相对于数字矩阵中分配的数字不正确。
我首先将颜色分配给一组数值。
cols <- c(
'0' = "#FFFFFF",
'1' = "#9AFC7F",
'2' = "#77F255",
'3' = "#60DF3D",
'4' = "#49C925",
'5' = "#37B215",
'6' = "#219900"
)
然后生成几个矩阵。
Map1 <- read.table(text="
1 1 1 0 0 1 1 0 2 1
1 1 1 1 0 1 1 1 2 1
0 1 1 0 2 2 1 1 1 1
0 1 1 1 1 1 2 1 2 2
1 1 2 1 1 1 1 1 2 2
1 1 1 1 1 2 2 1 2 2
1 2 0 1 1 2 1 2 1 2
0 2 2 0 1 1 1 1 1 1
0 1 1 0 0 1 2 2 1 0
0 1 1 1 1 1 1 1 1 0
")
Map2 <- read.table(text="
1 2 1 1 1 1 1 0 2 1
1 1 1 1 1 1 1 1 1 1
0 2 1 1 1 2 1 1 1 1
0 0 1 2 2 1 2 2 3 2
0 1 2 2 1 1 2 2 2 2
1 1 0 2 1 1 3 2 3 3
1 1 2 2 1 2 2 2 1 2
0 1 2 2 1 2 2 2 1 2
1 1 2 1 1 1 1 2 1 1
1 1 1 1 1 1 1 1 1 1
")
绘制矩阵后,我发现颜色与应分配的值不匹配。
image(1:nrow(Map1), 1:ncol(Map1), t(apply(Map1, 2, rev)), col=cols, xaxt='n', yaxt='n', ann=FALSE, bty='n', asp = 1)
image(1:nrow(Map2), 1:ncol(Map2), t(apply(Map2, 2, rev)), col=cols, xaxt='n', yaxt='n', ann=FALSE, bty='n', asp = 1)
我一直难以弄清楚为什么数字和颜色不对齐。绘制分配给cols 的数字会生成正确的序列。
d <- read.table(text="0 1 2 3 4 5 6")
image(1:nrow(d), 1:ncol(d), t(apply(d, 2, rev)), col=cols, xaxt='n', yaxt='n', ann=FALSE, bty='n', asp = 1)
第一个数字矩阵中没有任何6 值,因此第一个颜色矩阵中不应有任何黑色方块。似乎2 的值在第一个矩阵中被赋予了分配给6 的颜色,在第二个矩阵中被赋予了3 到6 的颜色。
将3 添加到第一个数字矩阵中似乎会将其他值向下移动色阶,即矩阵中的最大数字被分配最暗的颜色,而不是在cols 中分配的颜色。
Map1.2 <- read.table(text="
1 1 1 0 0 1 1 0 2 1
1 1 1 1 0 1 1 1 2 1
3 1 1 0 2 2 1 1 1 1
0 1 1 1 1 1 2 1 2 2
1 1 2 1 1 1 1 1 2 2
1 1 1 1 1 2 2 1 2 2
1 2 0 1 1 2 1 2 1 2
0 2 2 0 1 1 1 1 1 1
0 1 1 0 0 1 2 2 1 0
0 1 1 1 1 1 1 1 1 0
")
image(1:nrow(Map1), 1:ncol(Map1), t(apply(Map1, 2, rev)), col=cols, xaxt='n', yaxt='n', ann=FALSE, bty='n', asp = 1)
image(1:nrow(Map1.2), 1:ncol(Map1.2), t(apply(Map1.2, 2, rev)), col=cols, xaxt='n', yaxt='n', ann=FALSE, bty='n', asp = 1)
生成这两个颜色矩阵的数字矩阵之间的唯一区别是第一列中的0,第三行更改为3。
【问题讨论】:
-
问得好,但是 (1) 您能否提供数据,为我们提供 reproducible example ? (2) 你应该知道代码 sn-ps 对 R 代码没有任何用处 - 最好只对代码块使用缩进
-
重现问题所需的所有数据都应该在问题中。唯一的数据是数字矩阵,我使用的唯一代码在此处的页面上。
-
数字矩阵不是一种特别方便的格式来重现......(另外,更小的矩阵会更容易用于重现问题吗?)