Как сделать два графика бок о бок, используя 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-колонный макет. Когда вы это сделаете, результатом будет:
Чтобы свести к минимуму перекрытие подзаголовков, вам может понадобиться:
plt.tight_layout()
перед шоу. Уступая:
Ответ 2
Проверьте эту страницу: http://matplotlib.org/examples/pylab_examples/subplots_demo.html
plt.subplots
аналогичен. Первые два аргумента определяют макет (в вашем случае 2 строки, 1 столбец). Просто поменяйте их, чтобы получить их бок о бок (а не поверх друг друга).