我想使用matplotlib或colormap为颜色赋值。 更具体地说:如果我有一个小值(假设-14是最小值)和一个高值(假设86是最高值),我想打印低值更红的对象,具有较高值的对象(-14->完全红色; 86->完全为绿色)。对于值介于-14和86之间的对象,我想为它们分配红色和绿色之间的颜色。
我知道有一个名为“RdYlGr”的色彩图,它来自红黄绿色。也许有可能使用这张地图?但是怎么样?
总结:如何使用maplotlib的色彩映射将浮点数(例如,6.2从范围-14到86)映射到相应的十六进制颜色字符串(例如,“#A0CBE2”)。
答案 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