例如,如果您有一个Colormap cmap:

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

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

理想情况下,我可以通过执行以下操作来获得 map 中的中间 colored颜色 :

>>> 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]范围的值,它将分别返回底色和上色.默认情况下,这是范围内的最小和最大 colored颜色 (SO 0.0和1.0).可以使用cmap.set_under()cmap.set_over()更改此默认值.

对于"特殊"数字,如np.nannp.inf,默认值为0.0,可以使用cmap.set_bad()进行更改,类似于上面的"低于"和"高于".

最后,您可能需要规范化数据,使其符合[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)也可用于具有大范围值的数据范围.

(Thanks to both 100 and 101 for suggestions on how to improve the answer.)

Python相关问答推荐

从多行文本中提取事件对

了解shuffle在NP.random.Generator.choice()中的作用

使用argsorted索引子集索引数组

Matplotlib轮廓线值似乎不对劲

Python主进程和分支进程如何共享gc信息?

在Python中为变量的缺失值创建虚拟值

如何从FDaGrid实例中删除某些函数?

Python 3.12中的通用[T]类方法隐式类型检索

pandas DataFrame GroupBy.diff函数的意外输出

将整组数组拆分为最小值与最大值之和的子数组

如何在箱形图中添加绘制线的传奇?

删除所有列值,但判断是否存在任何二元组

如何将Docker内部运行的mariadb与主机上Docker外部运行的Python脚本连接起来

无法使用DBFS File API路径附加到CSV In Datricks(OSError Errno 95操作不支持)

将JSON对象转换为Dataframe

Scrapy和Great Expectations(great_expectations)—不合作

python中的解释会在后台调用函数吗?

python中csv. Dictreader. fieldname的类型是什么?'

用SymPy在Python中求解指数函数

Discord.py -