gpt4 book ai didi

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

转载 作者:IT老高 更新时间:2023-10-28 21:09:30 25 4
gpt4 key购买 nike

如果您有 Colormap cmap,例如:

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

如何从 0 到 1 之间获取特定颜色,其中 0 是 map 中的第一种颜色,而 1 是 map 中的最后一种颜色?

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

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

最佳答案

您可以使用下面的代码来做到这一点,并且您问题中的代码实际上非常接近您的需求,您所要做的就是调用您拥有的 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.nannp.inf,默认使用 0.0 值,这可以使用 cmap 进行更改。 set_bad() 类似于上面的under和over。

最后,您可能需要对数据进行规范化,使其符合 [0.0, 1.0] 范围。这可以使用 matplotlib.colors.Normalize 来完成。就像下面的小示例所示,其中参数 vminvmax 描述了哪些数字应分别映射到 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 Kingtontcaswell 关于如何改进答案的建议。)

关于python - 从 matplotlib 中的颜色图中获取单个颜色,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25408393/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com