设置matplotlib colormap的颜色限制

设置matplotlib colormap的颜色限制,matplotlib,color-mapping,Matplotlib,Color Mapping,我创建了一个函数,用于获取给定给一组数据的十六进制代码,如下所示: from matplotlib import cm, colors def get_color(series_data, cmap='Reds'): color_map = cm.get_cmap(cmap, 20) f = lambda x: colors.rgb2hex(color_map(x/series_data.max())[:3]) return series_data.apply(f) c

我创建了一个函数,用于获取给定给一组数据的十六进制代码,如下所示:

from matplotlib import cm, colors
def get_color(series_data, cmap='Reds'):
    color_map = cm.get_cmap(cmap, 20)
    f = lambda x: colors.rgb2hex(color_map(x/series_data.max())[:3])
    return series_data.apply(f)
cm.get\u cmap(cmap,20)
生成一个matplotlib.colors.LinearSegmentedColormap对象,该对象的范围从输入
系列\u数据的最小值到最大值

我看不出如何定义要评估的数据的颜色限制。例如,如果我想设置恒定的颜色限制,定义最小值0和最大值100,该怎么办?在我的职责范围内,我如何做到这一点


我试图将
series\u data.max()
替换为
100
以控制最大等效颜色(max),但我无法控制cmin。

需要将
color\u map
的参数缩放到[0,1]范围。例如,如果需要为
lo
获取最小(最大)颜色值(
hi
)值:

从matplotlib导入cm,颜色
作为pd进口熊猫
def get_颜色(系列数据,cmap='Reds',lo=None,hi=None):
如果lo为无:
lo=系列_数据.min()
如果hi为无:
hi=系列_数据.max()
如果lo==hi:
引发异常('无效范围')
颜色映射=cm.get\u cmap(cmap,20)
f=lambda x:colors.rgb2hex(颜色映射((x-lo)/(hi-lo))[:3])
返回系列_数据。应用(f)
s=pd系列(np.linspace(0,3,16))
colz=get_颜色(s,lo=1,hi=2)
对于拉链中的x、c(s、colz):
打印(“{.2f}{}.”格式(x,c))
示例输出为

0.00 #fff5f0
0.20 #fff5f0
0.40 #fff5f0
0.60 #fff5f0
0.80 #fff5f0
1.00 #fff5f0
1.20 #fdc7b0
1.40 #fc8363
1.60 #ed392b
1.80 #af1117
2.00 #67000d
2.20 #67000d
2.40 #67000d
2.60 #67000d
2.80 #67000d
3.00 #67000d