Как сделать два графика бок о бок, используя Python?

Я нашел следующий пример на matplotlib:

import numpy as np
import matplotlib.pyplot as plt


x1 = np.linspace(0.0, 5.0)
x2 = np.linspace(0.0, 2.0)

y1 = np.cos(2 * np.pi * x1) * np.exp(-x1)
y2 = np.cos(2 * np.pi * x2)

plt.subplot(2, 1, 1)
plt.plot(x1, y1, 'ko-')
plt.title('A tale of 2 subplots')
plt.ylabel('Damped oscillation')


plt.subplot(2, 1, 2)
plt.plot(x2, y2, 'r.-')
plt.xlabel('time (s)')
plt.ylabel('Undamped')

plt.show()

Мой вопрос: что мне нужно изменить, чтобы иметь участки рядом?

Ответы

Ответ 1

Измените настройки подзадачи на:

plt.subplot(1, 2, 1)

...

plt.subplot(1, 2, 2)

Параметрами для subplot являются: количество строк, количество столбцов и какая подзадача, в которой вы сейчас находитесь. Итак, 1, 2, 1 означает "1-строчный, 2-столбцовый рисунок: перейдите к первому подзаголовку". Затем 1, 2, 2 означает "1-строчный, 2-столбцовый рисунок: перейдите ко второму подзаголовку".

В настоящее время вы запрашиваете двухстрочный 1-столбцовый (то есть один поверх другого) макет. Вместо этого вам нужно запросить 1-строчный, 2-колонный макет. Когда вы это сделаете, результатом будет:

side by side plot

Чтобы свести к минимуму перекрытие подзаголовков, вам может понадобиться:

plt.tight_layout()

перед шоу. Уступая:

neater side by side plot

Ответ 2

Проверьте эту страницу: http://matplotlib.org/examples/pylab_examples/subplots_demo.html

plt.subplots аналогичен. Первые два аргумента определяют макет (в вашем случае 2 строки, 1 столбец). Просто поменяйте их, чтобы получить их бок о бок (а не поверх друг друга).