基于行数的 Seaborn 热图大小

Seaborn Heatmap size based on number of rows

我正在编写绘制 4 个不同热图的代码。这些热图代表 4 年来一年中每周的数据:行是周(第一周、第二周等),列是我这周的数据,每个热图代表不同的年份。

目前情况如下:

您可能会注意到,前 3 年有 52 周(全年),而最后一年(即 2020 年)我只有前 30 周的数据。

因为我正在绘制这些热图以将它们相互比较,所以我想“剪切”最后一个热图:我想对齐行与其他热图(所以基本上,如果与其他热图相比,它总体上几乎是另一个热图的一半,只有 30 行)。

到目前为止我的代码如下:

#------getting the data --------
array_2017 = np.array(list_data_years[0]) #[52,200] matrix
#array_2017 = (array_2017 - np.mean(array_2017)) / np.std(array_2017)

array_2018 = np.array(list_data_years[1]) #[52,200] matrix
#array_2018 = (array_2018 - np.mean(array_2018)) / np.std(array_2018)

array_2019 = np.array(list_data_years[2]) #[52,200] matrix
#array_2019 = (array_2019 - np.mean(array_2019)) / np.std(array_2019)

array_2020 = np.array(list_data_years[3]) #[30,200] matrix
#array_2020 = (array_2020 - np.mean(array_2020)) / np.std(array_2020)
----------

#--------plotting--------
fig = plt.figure(figsize=(15,15))
gs0 = gridspec.GridSpec(2,2, figure=fig, hspace=0.2)

ax0 = fig.add_subplot(gs0[0,0])
ax1 = fig.add_subplot(gs0[0,1])
ax2 = fig.add_subplot(gs0[1,0])
ax3 = fig.add_subplot(gs0[1,1])

sns.heatmap(array_2017, ax=ax0, vmin =0, vmax = 2000000)
sns.heatmap(array_2018, ax=ax1, vmin =0, vmax = 2000000)
sns.heatmap(array_2019, ax=ax2, vmin =0, vmax = 2000000)
sns.heatmap(array_2020, ax=ax3,vmin =0, vmax = 2000000)

一个简单的解决方案是用 NaN 填充 array_2020,使其具有 (52,200) 形状

array_2020 = np.pad(array_2020, ((0,52-array_2020.shape[0]),(0,0)), constant_values=np.NaN)