修复`image(。)`中颜色和值之间的关系

时间:2015-02-28 18:11:34

标签: r graphics graph plot

两个矩阵m1m2产生相同的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))

enter image description here

这意味着矩阵的值和颜色之间的关系从绘图到绘图变化(并且它完全有意义)。即使它降低了单个图像中的对比度,我也希望保持这种关系不变。一种解决方案是在我的矩阵中添加一个“框架”,以强制图像使用最极端的颜色来获得相同的极值。

min = min(cbind(m1, m2))
max = max(cbind(m1, m2))

m3 = rbind(max, m1 ,min)
image(m3, col=terrain.colors(100))

enter image description here

m4 = rbind(max, m2 ,min)
image(m4, col=terrain.colors(100))

enter image description here

它可以做到这一点,但它很难看!我可以制作一个稍微更高级的帧,但图像上的帧的存在永远不会是真正需要的。还有其他解决方案吗?

1 个答案:

答案 0 :(得分:1)

您可以尝试按矩阵中的值索引颜色矢量。 例如:

image(m1, col=terrain.colors(50)[m1]); 
image(m2, col=terrain.colors(50)[m2])

enter image description here terrain.colors(50)是50种颜色的矢量。由于m1从1到50 terrain.colors(50)[m1]将等于terrain.colors(50),您将获得150的颜色。

m2具有从20到30的十进制数,如果您将十进制数作为索引,则使用最大的前一个整数,因此terrain.colors(50)[m2]将是第二十和第三十之间的颜色向量terrain.colors(50)

的颜色