在 matlab/python 中创建特定颜色映射

Creating an specific colourmap in matlab/python

不确定问这个问题的最佳地点在哪里,但问题是:

由于我的电脑屏幕出现故障,我得到了一个我很久以前用 matlab 制作的图,但在 python 中也能正常工作,从你的常规 'hot' 颜色映射到一些东西完全不同,如下图所示:

顶部是原始的热点,底部是 'malfunction' 从深蓝色到亮粉色的白色

有谁知道如何有意地做到这一点?

事实证明,我更喜欢那个配色方案,但不确定 how/were 是否正确。

看起来你的屏幕只是颠倒了颜色。如果您想在 MATLAB 中反转颜色图,您可以通过执行以下操作相当简单地完成此操作:

colormap(1-hot);

这会将热图中的红色变为蓝色,将黑色变为白色。如果你更喜欢相反的方式(即红色 -> 白色,黑色 -> 蓝色),你可以这样做:

colormap(1-flipud(hot));

这适用于任何颜色图。

颜色图只是一个 3 列矩阵,其中每一行定义一种颜色。具体来说,这些列分别定义了 R、G、B 分量。因此,您可以手动创建颜色图。

例如,可以通过将 B 分量设置为 1 并让其他两个从 0 到 1 的范围来生成从蓝色到白色的颜色图:

cmap = [linspace(0,1,256).' linspace(0,1,256).' ones(256,1)];
colormap(cmap)
colorbar('horizontal')

可以通过重新排列 hot 颜色图的列来实现更接近您的 blue/pink/white 示例的内容:

cmap = hot(256);
cmap = cmap(:,[2 3 1]);
colormap(cmap),
colorbar('horizontal')

可以从 BrewerMap 函数生成许多漂亮的颜色图,可在 File Exchange or GitHub.

上获得

手动生成的颜色图的一个问题是它们不是 perceptually uniform in general. In contrast, many of Matlab's default colormaps like parula, or Python's like magma, are perceptually uniform. Here's a discussion about uniform and non-uniform colormaps, focused on parula. You can use Python's colormaps in Matlab with this File Exchange function Ander Biguri 的。

这里有两个使用 Matlab 的 parula 和 Python 的 plasma 的例子。在其中任何一个中,沿水平轴的相等增量大致对应于 "color change".

的类似感知