Визуализация данных в Python: простые графики

Этот курс познакомит вас с основами построения графиков с использованием библиотек Matplotlib и Seaborn. Вы научитесь создавать линейные, столбчатые и точечные диаграммы для базового анализа данных.

1. Введение в Matplotlib: построение первого линейного графика

Введение в Matplotlib: построение первого линейного графика

Визуализация данных — это процесс перевода сухих чисел в понятные графические образы. В экосистеме Python существует множество инструментов для этой задачи, но фундаментом для большинства из них служит библиотека Matplotlib. Это мощный, гибкий и проверенный временем инструмент, который позволяет создавать графики любой сложности: от простых линий до анимированных 3D-моделей.

Matplotlib предоставляет полный контроль над каждым элементом графика: осями, линиями, цветами, шрифтами и легендами. Понимание принципов работы этой библиотеки открывает двери к более высокоуровневым инструментам, таким как Seaborn или Pandas Plotting, которые построены поверх неё.

Установка и импорт

Для начала работы необходимо установить библиотеку. Если вы используете стандартный менеджер пакетов Python, выполните команду в терминале:

В скриптах и блокнотах Jupyter принято импортировать модуль pyplot из библиотеки Matplotlib под сокращенным псевдонимом plt. Это общепринятый стандарт, который вы встретите в 99% документации и примеров.

Модуль pyplot предоставляет процедурный интерфейс, напоминающий работу в MATLAB. Он содержит функции для создания фигур, создания областей рисования, нанесения линий и добавления меток.

Архитектура графика: Figure и Axes

Прежде чем строить графики, важно разобраться в иерархии объектов Matplotlib. Новички часто путают понятия «рисунок» и «оси», что приводит к ошибкам при настройке внешнего вида.

В Matplotlib существует два главных объекта:

  • Figure (Фигура) — это контейнер верхнего уровня. Представьте, что это чистый лист бумаги или окно приложения, на котором будет располагаться всё остальное. Фигура может содержать один или несколько графиков.
  • Axes (Оси) — это сама область построения графика. Это то, что мы обычно называем «графиком»: пространство с системой координат (ось X и ось Y), в котором рисуются линии, точки и гистограммы. Одна фигура может содержать много осей (например, таблица из 4 графиков).
  • !Структура объектов Matplotlib: Figure содержит Axes, который содержит элементы графика

    Когда мы используем простые команды plt.plot(), Matplotlib автоматически создает и Фигуру, и Оси, скрывая от нас детали реализации. Однако помнить об этой структуре полезно для более сложной настройки.

    Построение простого линейного графика

    Линейный график (Line Plot) — это базовый тип визуализации, который используется для отображения зависимости одной величины от другой. Чаще всего он применяется для показа изменений во времени.

    Для построения графика нам понадобятся данные. В простейшем случае это два списка чисел: координаты по оси X и координаты по оси Y.

    Рассмотрим пример, где мы отобразим рост температуры воздуха в течение недели.

    Функция plt.plot() принимает два аргумента: список значений для горизонтальной оси и список значений для вертикальной оси. Она соединяет точки прямыми линиями в том порядке, в котором они переданы.

    Функция plt.show() запускает цикл отрисовки и открывает окно с графиком. В среде Jupyter Notebook эта команда также фиксирует вывод изображения под ячейкой с кодом.

    !Результат выполнения функции plt.plot() с данными о температуре

    Особенность передачи одного списка

    Если вы передадите в plt.plot() только один список, Matplotlib автоматически сгенерирует значения для оси X. Это будут индексы элементов списка, начиная с 0.

    Оформление графика

    График без подписей бесполезен. Зритель должен понимать, что изображено на осях и в каких единицах измерения представлены данные. Добавим заголовок, подписи осей и сетку для лучшей читаемости.

    * plt.title(): устанавливает общий заголовок графика. * plt.xlabel() и plt.ylabel(): подписывают соответствующие оси. * plt.grid(): рисует вспомогательную сетку, которая помогает визуально соотносить точки линии с делениями на осях.

    Визуализация математических функций

    Matplotlib отлично справляется с визуализацией математических зависимостей. Построим график квадратичной функции:

    где — значение функции (зависимая переменная), а — аргумент функции (независимая переменная).

    Для создания плавных линий математических функций удобно использовать библиотеку NumPy для генерации массива точек, но можно обойтись и генераторами списков Python.

    В данном случае график будет представлять собой параболу. Чем больше точек мы возьмем в диапазоне x_values, тем более гладкой будет выглядеть кривая.

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

    Часто возникает необходимость сравнить два набора данных. Для этого достаточно вызвать функцию plt.plot() несколько раз перед вызовом plt.show(). Matplotlib автоматически назначит каждой линии свой цвет.

    Чтобы различать линии, необходимо добавить легенду. Для этого в функцию plot передается параметр label, а в конце вызывается plt.legend().

    !Сравнение двух наборов данных на одной координатной плоскости

    Настройка стиля линий

    Вы можете вручную управлять цветом, стилем линии и маркерами точек, используя дополнительные аргументы в plt.plot().

    * color (или c): цвет линии (например, 'red', 'green', '#00FF00'). * linestyle (или ls): стиль линии ('-' сплошная, '--' штриховая, ':' точечная). marker: стиль маркера точек ('o' круги, 's' квадраты, '' звезды). * linewidth (или lw): толщина линии.

    Пример кастомизации:

    Этот код нарисует зеленую штриховую линию толщиной 2 пикселя с круглыми маркерами в каждой точке данных.

    Сохранение графика

    После того как график построен и настроен, его часто нужно сохранить в файл для вставки в отчет или презентацию. Для этого используется метод plt.savefig().

    Важно: вызывать savefig нужно до вызова plt.show(), иначе вы сохраните пустой белый квадрат (так как show() очищает фигуру после закрытия окна).

    Параметр dpi=300 (dots per inch) задает разрешение изображения. Значение 300 подходит для качественной печати.

    Итоги

    В этой статье мы познакомились с основами библиотеки Matplotlib и научились строить базовые линейные графики. Ключевые моменты:

    * Основной интерфейс для работы — модуль matplotlib.pyplot, который импортируется как plt. * График состоит из контейнера Figure и области построения Axes. * Функция plt.plot(x, y) строит линейный график по координатам. * Для добавления информативности используются plt.title(), plt.xlabel(), plt.ylabel() и plt.legend(). * Несколько вызовов plt.plot() позволяют отобразить несколько зависимостей на одной координатной плоскости.

    2. Столбчатые диаграммы и гистограммы для анализа распределений

    Столбчатые диаграммы и гистограммы для анализа распределений

    Линейные графики отлично подходят для отображения динамики во времени, но когда задача состоит в сравнении величин между собой или анализе того, как часто встречаются те или иные значения в выборке, на сцену выходят столбчатые диаграммы и гистограммы. Эти два типа визуализации часто путают из-за их внешнего сходства, однако они служат принципиально разным целям и работают с разными типами данных.

    Столбчатая диаграмма (Bar Plot)

    Столбчатая диаграмма используется для сравнения категориальных данных. Это означает, что по одной оси у нас располагаются дискретные категории (названия городов, имена сотрудников, марки автомобилей), а по другой — численные значения, связанные с этими категориями (население, продажи, скорость).

    Ключевая визуальная особенность столбчатой диаграммы — наличие зазоров между столбцами. Эти промежутки подчеркивают, что категории не перетекают одна в другую, а являются отдельными сущностями.

    Построение вертикальной диаграммы

    В Matplotlib за построение столбчатых диаграмм отвечает функция plt.bar(). Она принимает два обязательных аргумента: список категорий (координаты X) и список значений (высоты столбцов).

    В этом примере Matplotlib автоматически разместит названия фруктов под соответствующими столбцами.

    Настройка внешнего вида

    Вы можете управлять шириной столбцов, их цветом и выравниванием. Параметр width задает ширину (по умолчанию 0.8), а color и edgecolor — цвет заливки и границы соответственно.

    Горизонтальная столбчатая диаграмма

    Если названия категорий слишком длинные, они могут перекрывать друг друга на оси X. В таких случаях лучше использовать горизонтальную ориентацию. Для этого применяется функция plt.barh() (обратите внимание на букву h в конце).

    При использовании plt.barh() аргументы меняются местами логически: первый список задает метки по вертикальной оси Y, а второй — длину столбцов вдоль оси X.

    !Горизонтальная ориентация предпочтительна при длинных названиях категорий

    Гистограмма (Histogram)

    Гистограмма предназначена для анализа распределения непрерывных численных данных. Она отвечает на вопросы: «В каком диапазоне лежит большинство значений?», «Есть ли выбросы?», «Симметрично ли распределение?».

    В отличие от столбчатой диаграммы, в гистограмме столбцы примыкают друг к другу вплотную, показывая непрерывность шкалы значений. Ось X здесь представляет собой числовую ось, разбитую на интервалы (корзины или bins), а ось Y показывает количество элементов, попавших в каждый интервал.

    Принцип работы

    Для построения гистограммы нам нужен только один массив чисел. Matplotlib самостоятельно:

  • Разбивает диапазон от минимального до максимального значения на равные интервалы.
  • Подсчитывает, сколько чисел попало в каждый интервал.
  • Рисует столбцы соответствующей высоты.
  • Функция для построения — plt.hist().

    Управление интервалами (Bins)

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

    * Если bins слишком мало, мы потеряем детали распределения (график будет слишком грубым). * Если bins слишком много, график станет «шумным» и рваным, так как в каждый интервал попадет слишком мало значений.

    Существует эмпирическое правило квадратного корня для выбора начального количества интервалов:

    где — рекомендуемое количество интервалов (bins), а — общее количество элементов в выборке. Например, для 1000 измерений оптимально начать с интервала.

    !Влияние количества интервалов (bins) на восприятие распределения данных

    Сравнение нескольких распределений

    Иногда нужно сравнить две выборки на одной гистограмме. Поскольку столбцы могут перекрывать друг друга, необходимо использовать параметр прозрачности alpha (от 0.0 до 1.0).

    Использование alpha=0.5 позволяет видеть пересечение двух графиков: области наложения станут более темными.

    Ключевые отличия Bar Plot и Histogram

    Понимание разницы между этими инструментами критически важно для корректной визуализации.

    | Характеристика | Столбчатая диаграмма (Bar Plot) | Гистограмма (Histogram) | | :--- | :--- | :--- | | Тип данных | Категориальные (строки, группы) | Непрерывные численные | | Ось X | Дискретные категории | Числовая шкала (интервалы) | | Визуализация | Есть зазоры между столбцами | Столбцы прижаты друг к другу | | Порядок | Можно менять местами столбцы | Порядок строго задан числовой осью | | Функция | plt.bar() | plt.hist() |

    Итоги

    В этой статье мы разобрали инструменты для анализа количественных соотношений и частотных распределений:

  • Столбчатые диаграммы (plt.bar) используются для сравнения значений между различными категориями.
  • Горизонтальные диаграммы (plt.barh) идеально подходят, когда названия категорий длинные и не помещаются на оси X.
  • Гистограммы (plt.hist) показывают, как распределены численные данные, разбивая их на интервалы.
  • Параметр bins в гистограммах управляет детализацией графика и должен подбираться исходя из объема данных (например, по правилу квадратного корня).
  • Для наложения нескольких гистограмм используется параметр прозрачности alpha.