Тем не менее, я хочу знать формулу или набор параметров конфигурации mpl, которые я могу использовать. поэтому я могу последовательно размещать заголовок независимо от размера изображения или размера сетки.
Что-то вроде F(image_shape, figsize) -> config / location того, как напрямую разместить заголовок над графиком
Например:
Код: Выделить всё
import matplotlib.pyplot as plt
import numpy as np
mat5x10 = (np.arange(5*10).reshape((5,10))%2 == 0)
fig,ax = plt.subplots()
ax.imshow(mat5x10)
fig.suptitle("mat 5x10")
_ = plt.show()

Я знаю, что могу использовать ax.set_title, чтобы разместить его лучше
Код: Выделить всё
mat5x10 = (np.arange(5*10).reshape((5,10))%2 == 0)
fig,ax = plt.subplots()
ax.imshow(mat5x10)
ax.set_title("mat 5x10")
_ = plt.show()

но этого недостаточно, когда я создаю несколько графиков. видите, что заголовок идет еще дальше, чтобы учесть несколько столбцов.
Код: Выделить всё
fig,axes = plt.subplots(ncols =2)
mat5x10 = (np.arange(5*10).reshape((5,10))%2 == 0)
axes[0].imshow(mat5x10)
mat2_5x10 = (np.arange(5*10).reshape((5,10))%2 == 1)
axes[1].imshow(mat2_5x10)
fig.suptitle("Two mats")
_ = plt.show()

Случайным образом угадывая размер фигуры, я могу приблизить заголовок к тому, который мне нужен (то есть меньше пустого пространства на верхняя часть рисунка)
Код: Выделить всё
fig,axes = plt.subplots(ncols =2, figsize=(10,3))
mat5x10 = (np.arange(5*10).reshape((5,10))%2 == 0)
axes[0].imshow(mat5x10)
mat2_5x10 = (np.arange(5*10).reshape((5,10))%2 == 1)
axes[1].imshow(mat2_5x10)
fig.suptitle("Two mats")
_ = plt.show()

Однако я не знаю, почему (10,3) работает для отображения двух матов (5x10). Я уверен, что это связано с соотношением сторон, но не знаю, как разработать метод правильного размещения этого заголовка независимо от того, какие изображения необычной формы я вставляю в рисунок.
такие вещи, как constrained_layout и Tight_layout кажутся неэффективными...
Совет?
Подробнее здесь: https://stackoverflow.com/questions/787 ... e-images-w