颜色条不会出现在使用子批次的热图中

Colorbars do not appear in heatmaps using sublots

我正在尝试绘制 3 个简单的热图,如代码所示。 但是,出现了 2 个问题:

  1. 部分热图中没有出现彩条。
  2. 生成的图非常小,而且不是通常的比例(见附图)。

供您参考: Seaborn 版本:0.11.0。 Matplotlib 版本:3.3.4

这是我的代码:

dates=pd.date_range(start='2019-01-01', periods=2, freq='D')
d0=pd.DataFrame([[np.nan, 0.1],[np.nan,0.3]], columns=dates)
d1=pd.DataFrame([[np.nan, 0],[np.nan, 0]], columns=dates)
d2=pd.DataFrame([[67,68]], columns=dates) 
DATA=[d0,d1,d2]

fig, axs = plt.subplots(ncols=2, nrows=3, sharex='col', figsize=(20, 20), 
                            gridspec_kw={'width_ratios': [1, 15]})    

for k, df in enumerate(DATA):     
    (ax0,ax1)=axs[k]
    sns.heatmap(df, annot=False, cmap=cmap, cbar_ax=ax0, ax=ax1)

结果:

在这种情况下,您不需要强制您的颜色条和热图具有相同的 x 轴,因此如果您删除 sharex='col' 它应该可以解决:

fig, axs = plt.subplots(ncols=2, nrows=3, figsize=(20, 20), 
                            gridspec_kw={'width_ratios': [1, 15]})    

for k, df in enumerate(DATA):     
    ax0,ax1=axs[k]
    sns.heatmap(df, annot=False, cmap=cmap, cbar_ax=ax0, ax=ax1)