如何在seaborn heatmap子图中保持颜色条宽度一致

时间:2017-08-11 21:07:40

标签: python numpy matplotlib heatmap seaborn

我试图在具有不同子图的单个图上绘制两个具有相同x轴的热图,每个图的比例都不同,因此它们需要不同的颜色条。每个热图也沿y轴有不同数量的观测值,见下文:

import numpy as np
import seaborn as sns

arr1 = np.random.rand(10, 10)*100
arr2 = np.random.rand(2, 10)

fig, axes = plt.subplots(2, 1, 
                     gridspec_kw={'height_ratios':[5, 1]}, 
                     sharex=True)

sns.heatmap(arr1, ax=axes[0]) 
sns.heatmap(arr2, ax=axes[1]) 

enter image description here

色块的宽度在图之间不一致。这是有道理的并且并不出乎意料,但是出于美学原因,我想强制每个的宽度保持一致。

我尝试使用cbar参数并明确定义颜色条的大小和位置:

fig, axes = plt.subplots(2, 1, 
                     gridspec_kw={'height_ratios':[5, 1]}, 
                     sharex=True)
sns.heatmap(arr1, ax=axes[0])

cbar_ax = fig.add_axes([.85, .135, .019, .15])
sns.heatmap(arr2, ax=axes[1], cbar_ax=cbar_ax)

enter image description here

虽然这样做的情节不再是一致的宽度。这里最好的方法是为各个轴子图上的每个颜色条定义轴吗?似乎我可能有一种更简单的方法

0 个答案:

没有答案