【问题标题】:Creating an specific colourmap in matlab/python在 matlab/python 中创建特定的颜色图
【发布时间】:2019-10-03 11:23:51
【问题描述】:

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

由于我的电脑屏幕出现故障,我得到了一个多年前使用 matlab 制作的图,但在 python 中也可以正常工作,从常规的“热”颜色图变为完全不同的颜色图,如下图所示:

顶部是原来的热,底部是“故障”,从深蓝色到亮粉色的白色

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

事实证明,我更喜欢这种配色方案,但不知道如何/如何正确。

【问题讨论】:

  • 你想得到什么颜色图?蓝色/粉色/白色,还是将其与红色/黄色/白色相结合的颜色图?
  • 好吧,MATLAB 已经提供了一个工具来定义和调整您自己的自定义颜色图。很直观,它被称为Colormap Editor
  • @Hoki 直观地足以修改预先存在的颜色图,而不是完全重新设置它
  • @LuisMendo 我想得到问题中所述的蓝色/粉色/白色...。
  • @Mac 该问题目前说明了如何有意识地完成这项工作。不清楚代词that指的是什么

标签: python matlab matplotlib color-scheme colormap


【解决方案1】:

颜色图只是一个 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 颜色图的列来实现更接近您的蓝色/粉色/白色示例:

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

BrewerMap 函数可以生成许多漂亮的颜色图,在 File ExchangeGitHub 上可用。

手动生成的颜色图的一个问题是它们通常不是perceptually uniform。相比之下,许多 Matlab 的默认颜色图,如 parula,或 Python 的 magma,在感知上是统一的。这是关于统一和非统一颜色图的discussion,重点关注parula。您可以通过 Ander Biguri 的 File Exchange function 在 Matlab 中使用 Python 的颜色图。

以下是 Matlab 的 parula 和 Python 的 plasma 的两个示例。在它们中的任何一个中,沿水平轴的相等增量大致对应于对“颜色变化”的类似感知。

【讨论】:

  • 感谢您的回复和 cmets。是的,我想要的地图的另一个问题,你刚刚给了我一种制作方法,它对色盲不友好。再次感谢!
【解决方案2】:

看起来您的屏幕只是简单地反转了颜色。如果您想在 MATLAB 中反转颜色图,您可以通过执行以下操作相当简单地做到这一点:

colormap(1-hot);

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

colormap(1-flipud(hot));

这应该适用于任何颜色图。

【讨论】:

  • 那不会产生粉红色,是吗?
  • 我不知道。我在原始情节中看不到任何粉红色,但我是色盲,所以这可能就是原因。
  • @LuisMendo 不是没有!这与简单地反转颜色相同,我尝试使用油漆...不会给出粉红色 =(.
  • @MrAzzaman,是的,不幸的是,我认为这不是一张很好的色盲地图。没想到....感谢您指出这一点
  • 您可以使用我提到的反转方法设置颜色图,然后使用 Hoki 提到的颜色图编辑器添加粉红色。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2020-03-08
  • 1970-01-01
  • 2018-04-27
  • 2016-05-30
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多