Как настроить высоту отдельных участков на тепловой карте Seaborn - PullRequest
0 голосов
/ 14 июля 2020

У меня есть тепловая карта с использованием seaborn, и я пытаюсь отрегулировать высоту 4-го графика ниже. Вы увидите, что у него всего 2 строки данных по сравнению с другими, у которых их больше:

Я использовал следующий код для создания графика:

f, ax = plt.subplots(nrows=4,figsize=(20,10))
cmap = plt.cm.GnBu_r
sns.heatmap(df,cbar=False,cmap=cmap,ax=ax[0])
sns.heatmap(df2,cbar=False,cmap=cmap,ax=ax[1])
sns.heatmap(df3,cbar=False,cmap=cmap,ax=ax[2])
sns.heatmap(df4,cbar=False,cmap=cmap,ax=ax[3])

Кто-нибудь знает следующий шаг, чтобы существенно уменьшить высоту 4-го участка и, таким образом, растянуть другой 3? На 4-м участке обычно всегда будет 2-3, а на других - 6-7 раз. Большое спасибо!

1 Ответ

1 голос
/ 14 июля 2020

Как обычно, с matplotlib довольно утомительно / утомительно. Но вот оно!

f = plt.figure(constrained_layout = True)  
specs = f.add_gridspec(ncols = 1, nrows = 4, height_ratios = [1,1,1,.5])

for spec, df in zip(specs, (df, df2, df3, df4)):
  ax = sns.heatmap(df,cbar=False,cmap=cmap, ax=f.add_subplot(spec)) 

Вы можете изменять высоту относительно друг друга, используя height_rat ios. Вы также можете реализовать параметр wdith_rat ios, если хотите изменить относительную ширину. Вы также можете реализовать for l oop для итерации по графику.

...