Урок курса

Построение графиков с Matplotlib

Jupyter Notebook с нуля: бесплатный курс

Простой график (линия)

Matplotlib – основная библиотека для построения графиков в Python. В сочетании с Jupyter она позволяет сразу видеть графики внутри ноутбука. Начнём с простого линейного графика функции.

Пример: построим график на интервале .

%matplotlib inline
import matplotlib.pyplot as plt
import numpy as np

# Данные для графика: массив x и соответствующие y
x = np.linspace(0, 2*np.pi, 100)  # 100 точек от 0 до 2π
y = np.sin(x)
plt.plot(x, y)
plt.show()

Здесь:

  • %matplotlib inline – специальная "магия", которая настраивает matplotlib на вывод графиков прямо в ноутбуке (в виде статичных изображений). В современных Jupyter Notebook это обычно установлено по умолчанию, но написать строчку не повредит.

  • plt.plot(x, y) – построение графика (линия) по точкам с координатами (x, y). В данном случае получится плавная синусоида.

  • plt.show() – команда отобразить рисунок. В ноутбуке даже без show() график появится, если plt.plot был последней командой, но show рекомендуется вызывать явно, особенно если несколько графиков.

После выполнения появится график синусоиды – волнистая линия. По умолчанию оси x и y не подписаны, график не озаглавлен – это мы добавим далее.

Если библиотека matplotlib не установлена (вдруг вы ставили окружение с нуля), установите через %pip install matplotlib. В Anaconda она включена изначально.

Настройка графика: заголовки и подписи

График полезно снабдить пояснениями:

plt.plot(x, y, color="green", linestyle="--", label="sin(x)")
plt.title("График функции sin(x)")
plt.xlabel("x (радианы)")
plt.ylabel("sin(x)")
plt.legend()
plt.show()

Объяснение:

  • plt.plot(x, y, color="green", linestyle="--", label="sin(x)") – здесь мы настроили цвет линии (green – зелёный) и стиль линии ("--" – штриховой). Параметр label задаёт метку для легенды (название графика).

  • plt.title – заголовок всего графика.

  • plt.xlabel и plt.ylabel – подписи оси X и оси Y.

  • plt.legend() – отобразить легенду на графике (в легенде будут метки всех серий данных, для которых указаны label – у нас одна серия "sin(x)").

Теперь график будет с заголовком и подписями осей, а также с легендой, где зелёный пунктир обозначен как sin(x). Если у вас одна кривая, легенда не обязательна, но мы показали её использование.

Можно также настроить пределы осей: например, plt.xlim(0, 2*np.pi) и plt.ylim(-1.1, 1.1) сделают оси ровно от 0 до 2π и от -1.1 до 1.1. Если этого не делать, matplotlib сам выберет разумный диапазон.

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

Matplotlib позволяет отобразить несколько линий на одном графике или сделать несколько графиков рядом (подграфики).

Несколько линий в одном окне: Например, отобразим сразу и на одной системе координат:

y2 = np.cos(x)
plt.plot(x, y, label="sin(x)")
plt.plot(x, y2, label="cos(x)")
plt.title("sin(x) и cos(x)")
plt.xlabel("x")
plt.ylabel("значение функции")
plt.legend()
plt.show()

Мы добавили вторым вызовом plt.plot ещё одну линию (cos). Matplotlib автоматически выберет для них разные цвета (обычно первая – синяя, вторая – оранжевая). Легенда теперь будет содержать два элемента. Так наглядно видно, что синус и косинус – сдвинуты по фазе.

Раздельные графики (subplots): Иногда удобнее не накладывать графики, а расположить их рядом или друг под другом. Для этого используют функцию plt.subplots. Пример: построим два графика рядом – левый для sin, правый для cos.

fig, axes = plt.subplots(1, 2, figsize=(10, 4))
axes[0].plot(x, y, color="blue")
axes[0].set_title("sin(x)")
axes[1].plot(x, y2, color="orange")
axes[1].set_title("cos(x)")
plt.show()

Здесь plt.subplots(1, 2, figsize=(10, 4)) создаёт фигуру (fig) с сеткой из 1 строки и 2 колонок графиков. axes – список из двух объектов осей (AxesSubplot). Мы нарисовали sin на первом (axes[0]) и cos на втором (axes[1]), задав заголовки. figsize управляет размером всего рисунка в дюймах (10x4 дюйма, т.е. примерно 1000x400 пикселей, если считать 100 dpi).

В результате получим два отдельных графика рядом. Это полезно для сравнительного анализа. Можно таким способом строить матрицы графиков (например, 2x2).

Продолжить с проверкой и прогрессом

Откройте интерактивный раннер с заданиями урока.

Перейти к интерактивному уроку