为颜色指定颜色

时间:2014-11-29 19:42:53

标签: python matplotlib colors

我想使用matplotlib或colormap为颜色赋值。 更具体地说:如果我有一个小值(假设-14是最小值)和一个高值(假设86是最高值),我想打印低值更红的对象,具有较高值的​​对象(-14->完全红色; 86->完全为绿色)。对于值介于-14和86之间的对象,我想为它们分配红色和绿色之间的颜色。

我知道有一个名为“RdYlGr”的色彩图,它来自红黄绿色。也许有可能使用这张地图?但是怎么样?

总结:如何使用maplotlib的色彩映射将浮点数(例如,6.2从范围-14到86)映射到相应的十六进制颜色字符串(例如,“#A0CBE2”)。

1 个答案:

答案 0 :(得分:0)

您可以直接使用colormaps完成大部分操作,但matplotlib会给出rgb而不是十六进制值,因此您需要自己执行十六进制。这是一个例子:

import matplotlib.cm as cm
import matplotlib.colors as colors

norm = colors.Normalize(vmin=-14, vmax=86)
f2rgb = cm.ScalarMappable(norm=norm, cmap=cm.get_cmap('RdYlGn'))

def f2hex(f2rgb, f):
    rgb = f2rgb.to_rgba(f)[:3]
    return '#%02x%02x%02x' % tuple([255*fc for fc in rgb])

print f2hex(f2rgb, -13.5)  #   gives #a60126  ie, dark red
print f2hex(f2rgb, 85.5)   #   gives #016937  ie, dark green with some blue