seabornmatplotlib自定义colormap。

问题描述 投票:1回答:1

我有一个二维numpy数组,我想绘制显示不同颜色的区域(蓝色代表数据<0,绿色代表0<=数据<5,红色代表数据>5)。

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

目前我使用的是 numexpr 对数据进行表达 (1 * (data < 0)) + (2 * (data >= 0) & (data < 5)) + (3 * (data >= 5)). 然后使用索引颜色数组词典({1: (0, 0, 255), 2: (0, 255, 0), 3: (255, 0, 0)})来计算数据的颜色值。我认为这是矫枉过正。一定有一个简单的方法可以使用seabornmatplot使用自定义colormaps来完成这个任务,我找不到。任何指针示例代码都会有很大帮助。

python matplotlib seaborn colormap
1个回答
1
投票

你可以创建一个自定义颜色图,并使用 sns.heatmapvmin=-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)

产出:

enter image description here

© www.soinside.com 2019 - 2024. All rights reserved.