Объедините две тепловые карты (разных размеров), сохраняя один и тот же размер ячейки, одну и ту же цветную полосу и одну и ту же ось X (GridSpec), - PullRequest
1 голос
/ 20 марта 2019

Я пытаюсь объединить две тепловые карты разных номеров строк. Я хочу сохранить одинаковый размер ячейки для обоих, и чтобы они имели одинаковую ось X и одну и ту же цветную полосу.

Вот что я попробовал до сих пор.

import matplotlib.pyplot as plt
import seaborn as sns
from matplotlib.gridspec import GridSpec
fig = plt.figure()

gs=GridSpec(16,18)

ax1 = fig.add_subplot(gs[0:6,:])
ax2 = fig.add_subplot(gs[7:17,:])

sns.heatmap(site, cmap="inferno", ax=ax1)
sns.heatmap(country, cmap="inferno", ax=ax2)

Вот вывод:

enter image description here

Большое спасибо.

1 Ответ

0 голосов
/ 20 марта 2019

Вы можете играть с height_ratios из GridSpec:

import matplotlib.gridspec as gs

site = np.random.random(size=(2,20))
country = np.random.random(size=(20,20))

fig = plt.figure()
N_rows_site, _ = site.shape
N_rows_country, _ = country.shape

grid=gs.GridSpec(2,2, height_ratios=[N_rows_site,N_rows_country], width_ratios=[50,1])

ax1 = fig.add_subplot(grid[0,0])
ax2 = fig.add_subplot(grid[1,0], sharex=ax1)
cax = fig.add_subplot(grid[:,1])

sns.heatmap(site, cmap="inferno", ax=ax1, cbar_ax=cax)
sns.heatmap(country, cmap="inferno", ax=ax2, cbar_ax=cax)
plt.setp(ax1.get_xticklabels(), visible=False)

enter image description here

с другим количеством линий:

site = np.random.random(size=(10,20))
country = np.random.random(size=(20,20))

enter image description here

...