1. Введение в визуализацию: основы работы с библиотекой Matplotlib
Введение в визуализацию: основы работы с библиотекой Matplotlib
Визуализация данных — это процесс перевода абстрактных чисел и массивов информации в графические образы. Человеческий мозг обрабатывает визуальную информацию в 60 000 раз быстрее, чем текстовую. В анализе данных график часто позволяет увидеть тренды, выбросы и закономерности, которые невозможно заметить в таблице Excel или выводе базы данных.
В экосистеме Python существует множество библиотек для визуализации (Seaborn, Plotly, Bokeh), но фундаментом для большинства из них является Matplotlib. Это старейшая, самая мощная и гибкая библиотека, понимание которой необходимо каждому аналитику и разработчику.
Установка и подготовка окружения
Matplotlib не входит в стандартную библиотеку Python, поэтому её необходимо установить. Стандартная практика — устанавливать её вместе с библиотекой NumPy, которая используется для генерации числовых данных.
В скриптах и ноутбуках Jupyter принято использовать стандартное сокращение при импорте модуля pyplot, который отвечает за построение графиков:
Анатомия графика Matplotlib
Главная сложность для новичков в Matplotlib — это иерархия объектов. График — это не просто картинка, а сложная структура вложенных контейнеров. Понимание этой структуры критически важно для тонкой настройки визуализации.
!Структура объекта Figure и его вложенных элементов
Основные компоненты:
Два стиля работы: Pyplot vs Объектно-ориентированный
В Matplotlib существует два способа написания кода, что часто сбивает с толку. Рассмотрим их различие.
1. Стиль Pyplot (State-machine)
Этот стиль имитирует работу в среде MATLAB. Вы вызываете функции напрямую из plt, и библиотека сама «понимает», к какому графику они относятся (к текущему активному).
Этот метод хорош для быстрых, простых графиков «на коленке», но он плохо масштабируется, когда нужно создать сложную визуализацию с несколькими подграфиками.
2. Объектно-ориентированный стиль (OO-Style)
Это профессиональный стандарт. Здесь мы явно создаем объекты Figure и Axes, а затем вызываем методы конкретных объектов. Это дает полный контроль над каждым элементом.
В дальнейшем курсе мы будем придерживаться именно объектно-ориентированного стиля.
Построение линейного графика
Самый базовый тип графика — линейный (plot). Он используется для отображения непрерывных изменений. Построим график математической функции.
Рассмотрим функцию синуса:
где — значение функции (ордината), — тригонометрическая функция синуса, а — аргумент функции (угол в радианах).
Для построения нам понадобятся данные. Компьютер не может построить непрерывную линию бесконечной точности, он строит множество точек и соединяет их отрезками.
Настройка визуального стиля
«Сырой» график редко подходит для презентации. Matplotlib позволяет настроить практически любой аспект отображения через аргументы функции plot.
Цвет и стиль линии
* color (или c): цвет линии. Можно использовать названия ('red', 'blue'), HEX-коды ('#FF5733') или сокращения ('r', 'g', 'b').
* linestyle (или ls): стиль линии. Сплошная ('-'), штриховая ('--'), штрих-пунктирная ('-.') или точки (':').
* linewidth (или lw): толщина линии в пунктах.
Маркеры
Маркеры выделяют конкретные точки данных на линии.
* marker: тип маркера ('o' — круг, 's' — квадрат, '^' — треугольник).
* markersize (или ms): размер маркера.
Пример комбинированной настройки:
Работа с несколькими графиками (Subplots)
Часто необходимо сравнить несколько графиков рядом. Функция plt.subplots() позволяет создать сетку из графиков.
Синтаксис:
fig, axes = plt.subplots(nrows, ncols)
Где nrows — количество строк, ncols — количество столбцов. Переменная axes в этом случае будет содержать массив объектов, к каждому из которых можно обращаться по индексу.
Сохранение результата
После того как график построен, его нужно сохранить. Для этого используется метод savefig объекта Figure. Важно вызывать его до plt.show(), иначе вы сохраните пустой холст (так как show очищает буфер после показа).
Параметр dpi (dots per inch) отвечает за разрешение изображения. Значение 300 подходит для качественной печати.
Итоги
matplotlib.pyplot. fig, ax = plt.subplots()).plot() соединяет точки линиями. Внешний вид настраивается через параметры color, linestyle, marker.nrows и ncols в функции subplots.