/
Вопросы и ответы
/
Аналитика данных
/

Matplotlib как построить несколько графиков

Matplotlib как построить несколько графиков

4 года назад

Arthur Cheremisin

Ответы

0

Для построения нескольких графиков на одном поле отображения в библиотеке matplotlib, вы можете использовать функцию subplot(). Эта функция позволяет разделить поле отображения на сетку из строк и столбцов и выбрать место для каждого графика.

Пример:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
import matplotlib.pyplot as plt

# Создание данных для графиков
x = [1, 2, 3, 4, 5]
y1 = [1, 4, 9, 16, 25]
y2 = [1, 2, 3, 4, 5]

# Создание первого графика
plt.subplot(2, 1, 1) # указываем 2 строки, 1 столбец, выбираем первое место
plt.plot(x, y1)
plt.title('График 1')

# Создание второго графика
plt.subplot(2, 1, 2) # указываем 2 строки, 1 столбец, выбираем второе место
plt.plot(x, y2)
plt.title('График 2')

plt.show()

В данном примере мы создали два графика на одном поле отображения, разделенном на две строки. График 1 с данными из списка y1 и график 2 с данными из списка y2. Функция subplot() принимает три аргумента: количество строк, количество столбцов и номер места для текущего графика.

Таким образом, используя функцию subplot() вы можете построить несколько графиков на одном поле отображения в matplotlib.

2 года назад

Ivan Mamtsev

0

Несколько графиков в matplotlib строят двумя способами: несколько линий на одних осях или сетка отдельных графиков через plt.subplots().

Несколько линий на одном графике

1
2
3
4
5
6
7
import matplotlib.pyplot as plt

x = [1, 2, 3, 4, 5]
plt.plot(x, [1, 4, 9, 16, 25], label="x²")
plt.plot(x, [1, 8, 27, 64, 125], label="x³")
plt.legend()
plt.show()

Каждый вызов plot() добавляет линию на те же оси. label и legend() подписывают линии.

Сетка графиков

plt.subplots(строки, столбцы) возвращает фигуру и массив осей. Каждый график рисуют на своей оси:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
import matplotlib.pyplot as plt

fig, axes = plt.subplots(2, 2, figsize=(10, 6))

axes[0, 0].plot([1, 2, 3], [3, 1, 2])
axes[0, 0].set_title("Линия")

axes[0, 1].bar(["A", "B", "C"], [5, 3, 7])
axes[0, 1].set_title("Столбцы")

axes[1, 0].scatter([1, 2, 3, 4], [4, 1, 3, 2])
axes[1, 0].set_title("Точки")

axes[1, 1].hist([1, 2, 2, 3, 3, 3, 4], bins=4)
axes[1, 1].set_title("Гистограмма")

fig.tight_layout()
plt.show()

tight_layout() раздвигает графики, чтобы подписи не налезали друг на друга. При одной строке оси индексируются одним числом: fig, axes = plt.subplots(1, 3) → axes[0], axes[1], axes[2].

Общая ось

1
fig, (ax1, ax2) = plt.subplots(2, 1, sharex=True)

sharex=True выравнивает графики по оси X — удобно для временных рядов.

Графики в отдельных окнах

1
2
3
4
5
plt.figure(1)
plt.plot([1, 2, 3])
plt.figure(2)
plt.plot([3, 2, 1])
plt.show()

Сохранить в файл

1
fig.savefig("charts.png", dpi=150)

Вызывайте savefig() до show(): после закрытия окна фигура может оказаться пустой.

Визуализацию данных разбирают в курсе «Python для анализа данных».

5 дней назад

Никита Вихров

+7 800 100 22 47

бесплатно по РФ

+7 495 085 21 62

бесплатно по Москве

108813 г. Москва, вн.тер.г. поселение Московский,
г. Московский, ул. Солнечная, д. 3А, стр. 1, помещ. 20Б/3
ОГРН 1217300010476
ИНН 7325174845