Урок курса
Построение графиков с 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).
Продолжить с проверкой и прогрессом
Откройте интерактивный раннер с заданиями урока.
