Я генерирую тепловую карту динамически, и количество категорий на осях Y и X может отличаться каждый раз. Как я могу расположить цветовую панель рядом с тепловой картой, чтобы она всегда была привязана к самому верху (в основном, к первой строке тепловой карты) независимо от высоты фигуры?
Вот что происходит:
Мне до сих пор удавалось устанавливать высоту и ширину цветовой панели, используя add_axes, чтобы они оставались постоянными независимо от размера фигуры. Однако я изо всех сил пытаюсь установить его положение оси Y динамически. Минимальный пример ниже:
import seaborn as sns
import numpy as np
import matplotlib.pyplot as plt
from mpl_toolkits.axes_grid1 import make_axes_locatable, axes_size
data = np.random.rand(5,5)
# Dynamic figure parameters.
topmargin = 0.1
bottommargin = 0.1
# Square height
cat_height = 0.4
# Number of y-axis points.
n=data.shape[0]
leftmargin = 0.1
rightmargin = 0.1
# Square width.
cat_width = 0.5
# Number of x-axis points.
m=data.shape[1]
# Dynamic figure height.
figheight = topmargin + bottommargin + (n+1)*cat_height
# Dynamic figure width.
figwidth = leftmargin + rightmargin + (m+1)*cat_width
fig, ax = plt.subplots(figsize=(figwidth, figheight))
# [x, y, width, height]
cbar_ax = fig.add_axes([0.93, 0.33, 0.13/m, 2.75/n])
# Plot the heatmap.
ax = sns.heatmap(data, ax=ax, cmap='coolwarm', cbar_ax=cbar_ax, cbar=True)
plt.show()
Обычно цветовая полоса перемещается вверх / вниз при изменении высоты фигуры, но мне бы хотелось, чтобы она каждый раз закреплялась наверху фигуры.