Python seaborn/matplotlib自定义颜色贴图
我有一个2d numpy数组,我想打印它,显示不同颜色的区域(蓝色表示数据<0,绿色表示0.5) 本质上,我试图根据数据范围对连续数据使用分类颜色Python seaborn/matplotlib自定义颜色贴图,python,matplotlib,seaborn,colormap,Python,Matplotlib,Seaborn,Colormap,我有一个2d numpy数组,我想打印它,显示不同颜色的区域(蓝色表示数据
目前,我正在使用表达式
(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)
输出: