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

时间:2013-02-28 16:02:39

标签: python matplotlib

考虑包含浮点数的变量x。我想使用matplotlib的colormaps将这个数字映射到一个颜色,但不能绘制任何东西。基本上,我希望能够使用mpl.cm.autumn选择色彩映射,使用mpl.colors.Normalize(vmin = -20, vmax = 10)设置范围,然后将x映射到相应的颜色。但我真的没有得到mpl.cm的文档,所以如果有人能给我一个提示。

3 个答案:

答案 0 :(得分:82)

它就像cm.hot(0.3)一样简单,返回(0.82400814813704837, 0.0, 0.0, 1.0)

完整的工作程序可以阅读

import matplotlib.cm as cm

print cm.hot(0.3)

如果您还想使用标准化程序,请使用

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 :(得分:10)

您可以通过提供介于0和1之间的参数从色彩图中获取颜色,例如cm.autumn(0.5)

如果游戏中存在规范化实例,请改为使用规范化的返回:

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

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

答案 2 :(得分:1)

颜色值转换为颜色图的颜色

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