оптимизация пространства между многими подзаголовками в Python

#python #matplotlib #subplot

#python #matplotlib #подзаголовок

Вопрос:

Я использую цикл для создания серии подзаголовков, которые состоят из 2 горизонтальных графиков в каждом вертикальном положении. Может быть много вертикальных позиций, обычно 50-100. У меня возникли проблемы с оптимизацией интервала между графиками. Когда я создаю графики с использованием цикла, чем больше у меня вертикальных позиций, тем больше разрыв между каждым горизонтальным графиком. Я бы хотел, чтобы графики были намного ближе друг к другу, поскольку каждое горизонтальное сопряжение — это связанное изображение, которое я пытаюсь показать.

Я пытался использовать subplots_adjust(wspace=...) , plt.tight_layout() и subplots(constrained_layout=True) , но все безрезультатно.

В прикрепленном изображении приведен пример небольшого массива с 10 вертикальными изображениями (я знаю, что в конце мне нужно настроить метки осей, но для целей этого примера это не имеет значения)

Чего мне не хватает? Я уверен, что должен быть способ сделать это.

Спасибо

пример

Комментарии:

1. Похоже, вы используете imshow with aspect=1 . Что создаст квадратные оси. Если вы используете квадратные оси и у вас 10×2, будет много пробелов, если соотношение сторон вашей фигуры близко к 10×2…

Ответ №1:

Без кода для воспроизведения вашей проблемы трудно предсказать решение. Может быть, вы можете использовать matplotlib.gridspec в сочетании с разумным figsize .

 # use reasonable figure size
fig = plt.figure(constrained_layout=True, figsize = (8, 20))

# create gridspec
gs = gridspec.GridSpec(ncols=2, nrows=8, figure=fig)

# add random plots
for i in range(8):
    ax1 = fig.add_subplot(gs[i, 0])
    ax2 = fig.add_subplot(gs[i, 1])
    
    # random data
    x1, y1, x2, y2 = np.random.normal(size = (4, 25))
    ax1.scatter(x1, y1, color = 'r')
    ax2.scatter(x2, y2, color = 'b')