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

时间:2015-03-13 13:53:37

标签: matlab matlab-figure zero colormap

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

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

figure, imagesc(Xvalues, Yvalues, Quantity) colorbar, colormap(hot), axis equal, axis off enter image description here

观察到0被赋予了一些不闪烁的红色,这使得难以看到消失值的区域。

是否有任何方法可以使用(例如) colormap(hot)表示正值,并使用一些blue-ish colormap 作为负值,两者都会在黑色零?

1 个答案:

答案 0 :(得分:1)

编辑:我看到一个类似问题的链接发布为对此问题的评论。答案提供了比我的好得多。

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

创建一个颜色贴图
mymap = [zeros(256,2),linspace(1,0,256)';linspace(0,1,256)', zeros(256,2)]

然后将其与

一起使用
colormap(mymap)

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