我试图在具有不同子图的单个图上绘制两个具有相同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])
色块的宽度在图之间不一致。这是有道理的并且并不出乎意料,但是出于美学原因,我想强制每个的宽度保持一致。
我尝试使用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)
虽然这样做的情节不再是一致的宽度。这里最好的方法是为各个轴子图上的每个颜色条定义轴吗?似乎我可能有一种更简单的方法