#python #matplotlib #subplot
#python #matplotlib #подзаголовок
Вопрос:
Я использую цикл для создания серии подзаголовков, которые состоят из 2 горизонтальных графиков в каждом вертикальном положении. Может быть много вертикальных позиций, обычно 50-100. У меня возникли проблемы с оптимизацией интервала между графиками. Когда я создаю графики с использованием цикла, чем больше у меня вертикальных позиций, тем больше разрыв между каждым горизонтальным графиком. Я бы хотел, чтобы графики были намного ближе друг к другу, поскольку каждое горизонтальное сопряжение — это связанное изображение, которое я пытаюсь показать.
Я пытался использовать subplots_adjust(wspace=...)
, plt.tight_layout()
и subplots(constrained_layout=True)
, но все безрезультатно.
В прикрепленном изображении приведен пример небольшого массива с 10 вертикальными изображениями (я знаю, что в конце мне нужно настроить метки осей, но для целей этого примера это не имеет значения)
Чего мне не хватает? Я уверен, что должен быть способ сделать это.
Спасибо
Комментарии:
1. Похоже, вы используете
imshow
withaspect=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')