两个矩阵m1
和m2
产生相同的image
。
m1 = matrix(1:50, ncol=1)
m2 = matrix(seq(20, 30, length.out = 50), ncol=1)
image(m1, col=terrain.colors(100))
image(m2, col=terrain.colors(100))
这意味着矩阵的值和颜色之间的关系从绘图到绘图变化(并且它完全有意义)。即使它降低了单个图像中的对比度,我也希望保持这种关系不变。一种解决方案是在我的矩阵中添加一个“框架”,以强制图像使用最极端的颜色来获得相同的极值。
min = min(cbind(m1, m2))
max = max(cbind(m1, m2))
m3 = rbind(max, m1 ,min)
image(m3, col=terrain.colors(100))
m4 = rbind(max, m2 ,min)
image(m4, col=terrain.colors(100))
它可以做到这一点,但它很难看!我可以制作一个稍微更高级的帧,但图像上的帧的存在永远不会是真正需要的。还有其他解决方案吗?
答案 0 :(得分:1)
您可以尝试按矩阵中的值索引颜色矢量。 例如:
image(m1, col=terrain.colors(50)[m1]);
image(m2, col=terrain.colors(50)[m2])
terrain.colors(50)
是50种颜色的矢量。由于m1
从1到50 terrain.colors(50)[m1]
将等于terrain.colors(50)
,您将获得1
到50
的颜色。
m2
具有从20到30的十进制数,如果您将十进制数作为索引,则使用最大的前一个整数,因此terrain.colors(50)[m2]
将是第二十和第三十之间的颜色向量terrain.colors(50)