facecolors是surface命令中用来改变颜色的组件,可以将指定变量作为表示为对应的颜色。但是这个组件默认colorbar的显示范围为0~1,且其处理范围为0~1。一般来说,会将颜色变量归一化使其值落到[0,1]中。但本研究要求颜色表示真实值,因此归一化的方法不适用。所以采用如下方法:
- 根据数据范围将原始数据除以相应的系数,使数据处于[0, 1]中。该系数一般是取数据中最大值相邻的整数或一位小数。
- 用format函数改变colorbar的ticks,即将其乘以上一步的系数。
def fmt(x,pos): # 改变显示范围,由0~1扩展
x=round(x, 2)
return r'${}$'.format(x*1.2)
cb=plt.colorbar(surf, shrink=0.5, aspect=10, pad=0.1, format=ticker.FuncFormatter(fmt))