- Импортирование библиотеки Matplotlib
- Примеры простых графиков
- Основные компоненты графика Matplotlib
- Выводы
Для визуализации данных в Python есть ряд готовых библиотек — Matplotlib, Seaborn, Plotly, Pandas. Эти решения уже хорошо зарекомендовали себя в среде разработчиков и аналитиков. Этот список регулярно пополняется, но при этом среди всех библиотек стоит выделить Matplotlib. Многие решения считаются надстройкой над ней, наследуя ее ядро — базовые объекты и методы.
Matplotlib остается на бэкенде у многих библиотек и не используется для построения графиков отдельно от них. Это происходит, потому что аналитики хотят работать с более удобными инструментами визуализации и писать меньше кода для ее реализации.
При этом аналитик не может строить сложные графики с помощью более высокоуровневых библиотек, если он не знает основные принципы визуализации в Matplotlib. Поэтому в этом уроке мы разберем важные объекты этой библиотеки и методы их визуализации.
Импортирование библиотеки Matplotlib
Библиотека Matplotlib включает в себя множество модулей, которые отвечают за реализацию ее основных объектов: фигур, линий, стилей, шрифтов и других визуальных объектов. Обычно разработчикам не нужно глубоко погружаться во все нюансы реализации. Достаточно использовать модуль pyplot
, который отвечает за реализацию визуализации.
Импорт модулей выглядит так:
import matplotlib as mpl
import matplotlib.pyplot as plt
Эти сокращения не обязательны, но они приняты в среде разработчиков, поэтому рекомендуем использовать их. После импорта необходимых модулей можно переходить к графикам. Начнем с базовых примеров с основными элементами.
Примеры простых графиков
Для построения графиков Matplotlib достаточно воспользоваться тремя методами:
- Метод
plt.plot()
строит линейный график, но могут быть другие варианты - Метод
plt.show()
выводит график на экран - Метод
plt.savefig()
сохраняет график в файл, его можно использовать вместоplt.show()
Посмотрим, как это работает на практике:
x = [1, 2, 3, 4]
y = [10, 5, 15, 0]
plt.plot(x, y)
plt.show()
На этом графике показаны значения списков x
и y
. График линейный, поэтому точки на графике соединены отрезками. Чтобы добавить название конкретного графика и области, в которой он отрисован, воспользуемся следующими методами:
- Метод
plt.legend()
отрисовывает название графика (легенду), указанное в параметреlabel
методаplt.plot()
- Метод
plt.title()
отрисовывает название области, само название передается параметром
plt.plot(x, y, label="plot")
plt.legend()
plt.title("Simple plot")
plt.show()
В области отрисовки может находиться не один график, а несколько. В примере ниже вы видите два графика с разными названиями:
y_shift = [val + 2 for val in y]
plt.plot(x, y, label="plot")
plt.plot(x, y_shift, label="plot + 2")
plt.legend()
plt.title("Simple plot")
plt.xlabel("x-values")
plt.ylabel("y-values")
plt.grid()
plt.show()
Еще на графике выше появились названия осей координат и координатная сетка. Это реализовано с использованием методов:
- Для названия осей —
plt.xlabel()
иplt.ylabel()
- Для координатной сетки
plt.grid()
Прямое использование методов модуля plt
упрощает работу с простыми графиками, но для более сложных объектов оно не подходит. Далее мы рассмотрим метод plt.subplots()
, который позволяет гибко настраивать графики и работать с более сложными визуализациями.
Основные компоненты графика Matplotlib
Чтобы настроить визуальные представления в Matplotlib, воспользуемся методом plt.subplots()
. Он возвращает два объекта:
Figure
— полотно, на котором мы расположим всю визуализациюAxes
— области визуализации, на которых мы разместим все видимые объекты
В примере ниже вы увидите реализацию линейного графика с помощью метода plt.subplots()
. Объект Figure
присваивается переменной fig
, а объект Axes
— переменной ax
. Отметим, что некоторые методы визуализации изменились на методы с префиксом set_
:
set_title()
set_xlabel()
set_ylabel()
При этом метод plt.show()
остался без изменения. Он отрисовывает фигуру со всеми областями визуализации:
fig, ax = plt.subplots()
ax.plot(x, y, label="plot")
ax.legend()
ax.set_title("Simple plot")
ax.set_xlabel("x-values")
ax.set_ylabel("y-values")
ax.grid()
plt.show()
Областей визуализации может быть несколько. Они располагаются в виде сетки, размеры которой задаются параметрами метода plt.subplots(nrows, ncols)
. В примере ниже показана сетка размером в одну строку и два столбца. Настройка размера всей фигуры и ее название можно реализовать методами fig.set_size_inches()
и fig.suptitle()
соответственно.
Советуем изучить код ниже — именно этого стиля стоит придерживаться, чтобы повысить читабельность ваших реализаций на Matplotlib:
fig, axes = plt.subplots(1, 2)
fig.set_size_inches(8, 4)
fig.suptitle('Subplots example', fontsize=12)
axes[0].plot(x, y, label='plot')
axes[0].legend()
axes[0].set_title('Simple plot')
axes[0].set_xlabel('x-values')
axes[0].set_ylabel('y-values')
axes[0].grid()
axes[1].plot(x, y_shift, label='plot + 2')
axes[1].legend()
axes[1].set_title('Simple plot + 2')
axes[1].set_xlabel('x-values')``
axes[1].set_ylabel('y-values')
axes[1].grid()
plt.show()
Каждая область визуализации определяется индексом и настраивается отдельно друг от друга. На картинке область с индексом 0 содержит график plot
, а область с индексом 1 — график plot + 2
. Нумерация областей ведется слева направо и сверху вниз.
Последним примером в уроке рассмотрим дополнительные визуальные объекты на графиках и их конфигурации. Дополним реализацию следующими параметрами:
marker
— форма отрисовки точки на графикеcolor
— цвет линии графикаlinestyle
— стиль линии
Так это выглядит на практике:
fig, axes = plt.subplots(1, 2)
fig.set_size_inches(8, 4)
fig.suptitle("Subplots example", fontsize=12)
axes[0].plot(x, y, marker="v", color="r", label="plot")
axes[0].legend()
axes[0].set_title("Simple plot")
axes[0].set_xlabel("x-values")
axes[0].set_ylabel("y-values")
axes[0].grid()
axes[1].plot(x, y_shift, marker="o", c="g", linestyle="dashed", label="plot + 2")
axes[1].legend()
axes[1].set_title("Simple plot + 2")
axes[1].set_xlabel("x-values")
axes[1].set_ylabel("y-values")
axes[1].grid()
plt.show()
В этом примере мы собрали самые распространенные элементы визуализации, с помощью которых можно строить сложные представления в рамках одной фигуры:
- Делать сетку графиков
- Определять стили линий, подписей, осей и других визуальных элементов
- Настраивать параметры отображения фигуры такие, как размер картинки и название
Выводы
В этом уроке мы познакомились с основными объектами библиотеки Matplotlib. Мы поговорили о следующих составных частях любого графика:
Figure
Axes
Artists (Axis, Line, Title, Legend)
Любой график — это фигура, на которой может быть располагаться несколько визуальных окружений с расположенными на нем визуальными объектами. Среди них:
- Оси координат
- Графики различных типов
- Названия графиков
- Линии и маркеры
Запомнить все подробности поможет эта схема:
Здесь основные элементы выделены кругами с подписями и примером кода, который инициализирует или настраивает каждый элемент. Можно использовать ее как шпаргалку, а за дополнительными примерами обращаться к документации Matplotlib.
Когда вы разберетесь в том, как устроены фигуры библиотеки Matplotlib, вы сможете строить сложные графики с помощью Pyplot, ее внутреннего модуля. Также можно использовать методы других высокоуровневых библиотек, построенных на базе Matplotlib.
Для полного доступа к курсу нужен базовый план
Базовый план откроет полный доступ ко всем курсам, упражнениям и урокам Хекслета, проектам и пожизненный доступ к теории пройденных уроков. Подписку можно отменить в любой момент.