Python seaborn/matplotlib自定义颜色贴图

Python seaborn/matplotlib自定义颜色贴图,python,matplotlib,seaborn,colormap,Python,Matplotlib,Seaborn,Colormap,我有一个2d numpy数组,我想打印它,显示不同颜色的区域(蓝色表示数据

我有一个2d numpy数组,我想打印它,显示不同颜色的区域(蓝色表示数据<0,绿色表示0.5)

本质上,我试图根据数据范围对连续数据使用分类颜色


目前,我正在使用表达式
(1*(数据<0))+(2*(数据>=0)和(数据<5))+(3*(数据>=5))对数据使用
numexpr
。然后使用索引颜色数组/dict(
{1:(0,0,255),2:(0,255,0),3:(255,0,0)}
)计算数据的颜色值。我认为这太过分了。一定有一种简单的方法可以使用seaborn/matplot使用自定义颜色贴图来实现这一点,我找不到这种方法。任何指针/示例代码都会非常有用。

您可以创建自定义颜色映射,并使用
sns.heatmap
vmin=-1,vmax=6

# random data
np.random.seed(1)
a = np.random.uniform(-2,10,(10,10))

from matplotlib import cm, colors as mcolors

# create a custome color map
cmap = mcolors.ListedColormap(['b']+['g']*5 + ['r'], name='abcd', N=7)

# plot heat map, annotation for reference
sns.heatmap(a, annot=True,xticklabels=False, yticklabels=False, cmap=cmap, vmin=-1,vmax=6)
输出: