MATLAB imagesc:使用黑色作为值 0 的中间色

MATLAB imagesc: Use black as mid-color for value 0

我想使用 imagesc 绘制一个数量,其中所有正值、负值和接近零的值都很重要。我希望接近零的颜色为黑色,但没有提供这种功能的默认 colormap

例如,使用 colormap(hot) 将黑色分配给最低(在本例中为负数)的数字,这看起来很糟糕:

figure, imagesc(Xvalues, Yvalues, Quantity) colorbar, colormap(hot), axis equal, axis off

观察到 0 被分配了一些不起眼的红色,这使得消失值的区域很难看到。

有没有什么方法可以使用(例如)colormap(hot) 用于正值和一些蓝色 colormap 用于负值,两者都在黑色零处相遇?

编辑:我看到类似问题的 link 作为对该问题的评论发布在这里。那里提供的答案比我的好很多

您可以制作自定义颜色图。颜色图具有三列和任意数量的行。每列代表一种颜色(分别为红色、绿色、蓝色)。例如,如果您想要一张从红色到蓝色的颜色图,您可以制作一个:

mymap = [zeros(256,2),linspace(1,0,256)';linspace(0,1,256)', zeros(256,2)]

然后与

一起使用
colormap(mymap)

我不知道有一种简单的方法可以使黑色等于零,尽管必须存在一种方法。我能给你的最好建议是根据你的最小值和最大值计算每种颜色需要多少行。