Зарегистрируйтесь, чтобы продолжить обучение

Библиотека Matplotlib Python: Визуализация данных

Для визуализации данных в 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()

align=center

На этом графике показаны значения списков x и y. График линейный, поэтому точки на графике соединены отрезками. Чтобы добавить название конкретного графика и области, в которой он отрисован, воспользуемся следующими методами:

  • Метод plt.legend() отрисовывает название графика (легенду), указанное в параметре label метода plt.plot()
  • Метод plt.title() отрисовывает название области, само название передается параметром
plt.plot(x, y, label="plot")
plt.legend()
plt.title("Simple plot")
plt.show()

align=center

В области отрисовки может находиться не один график, а несколько. В примере ниже вы видите два графика с разными названиями:

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()

align=center

Еще на графике выше появились названия осей координат и координатная сетка. Это реализовано с использованием методов:

  • Для названия осей — 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()

align=center

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

align=center

Каждая область визуализации определяется индексом и настраивается отдельно друг от друга. На картинке область с индексом 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()

align=center

В этом примере мы собрали самые распространенные элементы визуализации, с помощью которых можно строить сложные представления в рамках одной фигуры:

  • Делать сетку графиков
  • Определять стили линий, подписей, осей и других визуальных элементов
  • Настраивать параметры отображения фигуры такие, как размер картинки и название

Выводы

В этом уроке мы познакомились с основными объектами библиотеки Matplotlib. Мы поговорили о следующих составных частях любого графика:

  • Figure
  • Axes
  • Artists (Axis, Line, Title, Legend)

Любой график — это фигура, на которой может быть располагаться несколько визуальных окружений с расположенными на нем визуальными объектами. Среди них:

  • Оси координат
  • Графики различных типов
  • Названия графиков
  • Линии и маркеры

Запомнить все подробности поможет эта схема:

alt=Anatomy

Здесь основные элементы выделены кругами с подписями и примером кода, который инициализирует или настраивает каждый элемент. Можно использовать ее как шпаргалку, а за дополнительными примерами обращаться к документации Matplotlib.

Когда вы разберетесь в том, как устроены фигуры библиотеки Matplotlib, вы сможете строить сложные графики с помощью Pyplot, ее внутреннего модуля. Также можно использовать методы других высокоуровневых библиотек, построенных на базе Matplotlib.

Для полного доступа к курсу нужен базовый план

Базовый план откроет полный доступ ко всем курсам, упражнениям и урокам Хекслета, проектам и пожизненный доступ к теории пройденных уроков. Подписку можно отменить в любой момент.

Получить доступ
1000
упражнений
2000+
часов теории
3200
тестов

Открыть доступ

Курсы программирования для новичков и опытных разработчиков. Начните обучение бесплатно

  • 130 курсов, 2000+ часов теории
  • 1000 практических заданий в браузере
  • 360 000 студентов
Отправляя форму, вы принимаете «Соглашение об обработке персональных данных» и условия «Оферты», а также соглашаетесь с «Условиями использования»

Наши выпускники работают в компаниях:

Логотип компании Альфа Банк
Логотип компании Aviasales
Логотип компании Yandex
Логотип компании Tinkoff