从 matplotlib 中的颜色图中获取单个颜色 您所在的位置:网站首页 matplotlibcmap 从 matplotlib 中的颜色图中获取单个颜色

从 matplotlib 中的颜色图中获取单个颜色

2023-03-24 16:20| 来源: 网络整理| 查看: 265

回答问题

如果你有一个Colormapcmap,例如:

cmap = matplotlib.cm.get_cmap('Spectral')

如何在 0 和 1 之间获得特定颜色,其中 0 是地图中的第一种颜色,而 1 是地图中的最后一种颜色?

理想情况下,我可以通过以下方式获得地图中的中间颜色:

>>> do_some_magic(cmap, 0.5) # Return an RGBA tuple (0.1, 0.2, 0.3, 1.0) Answers

您可以使用下面的代码执行此操作,并且您问题中的代码实际上非常接近您的需要,您所要做的就是调用您拥有的cmap对象。

import matplotlib cmap = matplotlib.cm.get_cmap('Spectral') rgba = cmap(0.5) print(rgba) # (0.99807766255210428, 0.99923106502084169, 0.74602077638401709, 1.0)

对于 [0.0, 1.0] 范围之外的值,它将返回下颜色和上颜色(分别)。默认情况下,这是该范围内的最小和最大颜色(因此为 0.0 和 1.0)。可以使用cmap.set_under()和cmap.set_over()更改此默认值。

对于“特殊”数字,例如np.nan和np.inf,默认使用 0.0 值,这可以使用cmap.set_bad()进行更改,类似于上面的 under 和 over。

最后,您可能需要对数据进行规范化,使其符合 zwz100010 0.0, 1.0]范围。这可以使用 matplotlib.colors.Normalize来完成,如下面的小示例所示,其中参数vmin和vmax分别描述了应该将哪些数字映射到 0.0 和 1.0。

import matplotlib norm = matplotlib.colors.Normalize(vmin=10.0, vmax=20.0) print(norm(15.0)) # 0.5

对数归一化器 (matplotlib.colors.LogNorm) 也可用于具有大范围值的数据范围。

(感谢Joe Kington和tcaswell关于如何改进答案的建议。)



【本文地址】

公司简介

联系我们

今日新闻

    推荐新闻

    专题文章
      CopyRight 2018-2019 实验室设备网 版权所有