如何使用matplotlib的颜色映射将数字映射到颜色?

79
考虑一个包含浮点数的变量x。我想使用matplotlib的colormap将此数字映射到颜色,但不绘制任何内容。 基本上,我希望能够选择例如mpl.cm.autumn的colormap,使用mpl.colors.Normalize(vmin = -20,vmax = 10)设置范围,然后将x映射到相应的颜色。 但我真的不理解mpl.cm的文档,如果有人能给我一些提示就好了。
3个回答

128

这就像是cm.hot(0.3)一样简单:

import matplotlib.cm as cm
    
print(cm.hot(0.3))

(0.8240081481370484, 0.0, 0.0, 1.0)

如果您也想要使用规范化器,请使用

import matplotlib as mpl
import matplotlib.cm as cm
   
norm = mpl.colors.Normalize(vmin=-20, vmax=10)
cmap = cm.hot
x = 0.3

m = cm.ScalarMappable(norm=norm, cmap=cmap)
print(m.to_rgba(x))

(1.0, 0.8225486412996345, 0.0, 1.0)

你如何在cm.hot()中省略alpha值? - S. Feunmajer

25

通过在0到1之间提供一个参数,例如cm.autumn(0.5),可以从colormap中获取颜色。

如果游戏中存在Normalization实例,请使用Normalization的返回值:

import matplotlib.cm as cm
from matplotlib.colors import Normalize

cmap = cm.autumn
norm = Normalize(vmin=-20, vmax=10)
print cmap(norm(5))

使用API的这种方式看起来更加简洁。 - Mateen Ulhaq

4

将数字值转换为彩色地图颜色

import matplotlib.cm as cm
import matplotlib as matplotlib

def color_map_color(value, cmap_name='Wistia', vmin=0, vmax=1):
    # norm = plt.Normalize(vmin, vmax)
    norm = matplotlib.colors.Normalize(vmin=vmin, vmax=vmax)
    cmap = cm.get_cmap(cmap_name)  # PiYG
    rgb = cmap(norm(abs(value)))[:3]  # will return rgba, we take only first 3 so we get rgb
    color = matplotlib.colors.rgb2hex(rgb)
    return color

谢谢你!在搜索了几个小时后,这就是解决我的问题的方法。 - inconveniently_nonexempt_bee

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接