Як зробити два графіки поруч за допомогою Python?


94

Я знайшов такий приклад на 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()

Моє запитання: що мені потрібно змінити, щоб сюжети стояли поруч?

Відповіді:


148

Змініть налаштування додаткового сюжету на:

plt.subplot(1, 2, 1)

...

plt.subplot(1, 2, 2)

Параметри для subplot: кількість рядків, кількість стовпців і який підгруппи ви зараз перебуваєте. Отже, 1, 2, 1означає "цифра з 1 рядком і 2 колонками: перейдіть до першого додаткового плану" Потім 1, 2, 2означає "цифра з 1 рядком і 2 колонками: перейдіть до другої підзаготівлі".

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

пліч-о-пліч сюжет

Для того, щоб мінімізувати перекриття підзаголовків, вам може знадобитися:

plt.tight_layout()

перед шоу. Урожайність:

акуратніший пліч-о-пліч сюжет


45

Ознайомтесь із цією сторінкою: http://matplotlib.org/examples/pylab_examples/subplots_demo.html

plt.subplotsє подібним. Я думаю, що це краще, оскільки простіше встановлювати параметри фігури. Перші два аргументи визначають макет (у вашому випадку 1 рядок, 2 стовпці), а інші параметри змінюють такі функції, як розмір фігури:

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)

fig, axes = plt.subplots(nrows=1, ncols=2, figsize=(5, 3))
axes[0].plot(x1, y1)
axes[1].plot(x2, y2)
fig.tight_layout()

введіть тут опис зображення


1
Чи є також спосіб зробити сюжет ширшим і вищим?
Heißenberg93,

Я не маю на увазі похвалу plt.xlim / ylim
Heißenberg93,

5
Я б запропонував використовувати plt.subplots. Ви можете вказати аргумент, figsizeщоб визначити розмір фігури. Як у plt.subplots(1, 2, figsize=(20, 4)). В іншому випадку, ви могли б спочатку визначити фігуру і фігурне розмір: plt.figure(figsize=(20, 4)).
busybear

З якоїсь причини я отримую порожні дані, коли намагаюся зберегти підзапис "plt.savefig ('.... png')". Зображуючи той самий код на початку (я лише додав plt.figure (figsize = (7, 3))).
Heißenberg93,

Ви дзвоните plt.savefigпісля plt.show? Якщо так, то це, мабуть, ваша проблема.
busybear
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.