Построение гистограмм в Python с помощью Matplotlib: Полное руководство

Введение в гистограммы и Matplotlib

Что такое гистограмма и когда ее использовать?

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

Краткий обзор библиотеки Matplotlib

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

Установка и настройка Matplotlib

Установить Matplotlib можно с помощью pip:

pip install matplotlib

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

Базовая гистограмма с Matplotlib

Импорт необходимых библиотек (matplotlib.pyplot, numpy)

import matplotlib.pyplot as plt
import numpy as np

Создание простого набора данных для гистограммы (numpy.random.randn)

data: np.ndarray = np.random.randn(1000)  # 1000 случайных значений из стандартного нормального распределения

Использование plt.hist() для построения гистограммы

plt.hist(data, bins=30)  # Создание гистограммы с 30 интервалами

Отображение гистограммы с помощью plt.show()

plt.show()

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

Изменение количества столбцов (bins)

plt.hist(data, bins=50)  # Увеличение количества интервалов для более детальной визуализации
plt.show()

Настройка цвета столбцов (color)

plt.hist(data, bins=30, color='skyblue')
plt.show()

Добавление границ столбцов (edgecolor)

plt.hist(data, bins=30, color='skyblue', edgecolor='black')
plt.show()

Изменение прозрачности столбцов (alpha)

plt.hist(data, bins=30, color='skyblue', edgecolor='black', alpha=0.7) # alpha от 0 (полностью прозрачный) до 1 (полностью непрозрачный)
plt.show()

Ориентация гистограммы (horizontal/vertical)

По умолчанию гистограмма строится вертикально. Для горизонтальной ориентации можно использовать orientation='horizontal'.

plt.hist(data, bins=30, color='skyblue', edgecolor='black', orientation='horizontal')
plt.show()

Добавление подписей и заголовков

Подпись осей (xlabel, ylabel)

plt.hist(data, bins=30)
plt.xlabel('Значение')
plt.ylabel('Частота')
plt.show()

Добавление заголовка гистограммы (title)

plt.hist(data, bins=30)
plt.xlabel('Значение')
plt.ylabel('Частота')
plt.title('Гистограмма распределения данных')
plt.show()

Добавление легенды (legend) при необходимости

Легенда используется при построении нескольких гистограмм на одном графике (см. далее).

Работа с несколькими гистограммами на одном графике

Создание нескольких наборов данных

data1: np.ndarray = np.random.randn(1000)
data2: np.ndarray = np.random.randn(1000) + 1  # Сдвинутое распределение

Отображение гистограмм разных наборов данных с разными цветами

plt.hist(data1, bins=30, color='skyblue', label='Данные 1')
plt.hist(data2, bins=30, color='salmon', label='Данные 2')
plt.show()

Настройка прозрачности для отображения перекрывающихся гистограмм

plt.hist(data1, bins=30, color='skyblue', alpha=0.5, label='Данные 1')
plt.hist(data2, bins=30, color='salmon', alpha=0.5, label='Данные 2')
plt.show()

Использование plt.legend() для идентификации гистограмм

plt.hist(data1, bins=30, color='skyblue', alpha=0.5, label='Данные 1')
plt.hist(data2, bins=30, color='salmon', alpha=0.5, label='Данные 2')
plt.legend()
plt.show()

Нормирование гистограмм

Что такое нормирование и зачем оно нужно?

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

Использование параметра density=True для нормирования

plt.hist(data, bins=30, density=True)
plt.show()

Интерпретация нормированной гистограммы

Площадь под нормированной гистограммой равна 1. Значение по оси Y представляет собой плотность вероятности.

Сохранение гистограмм в файл

Использование plt.savefig() для сохранения гистограммы

plt.hist(data, bins=30)
plt.savefig('histogram.png')  # Сохранение в файл histogram.png

Выбор формата файла (PNG, JPG, PDF, SVG)

plt.savefig('histogram.pdf', format='pdf')

Настройка разрешения при сохранении (dpi)

plt.savefig('histogram.png', dpi=300)

Продвинутые техники и примеры

Использование различных стилей графиков Matplotlib (plt.style.use())

Matplotlib предлагает различные стили для изменения внешнего вида графиков. Например:

plt.style.use('ggplot') # или 'seaborn', 'dark_background' и т.д.
plt.hist(data, bins=30)
plt.show()

Создание гистограмм на основе DataFrame Pandas

import pandas as pd

data_frame: pd.DataFrame = pd.DataFrame({'clicks': np.random.randint(0, 100, 1000)}) #Симулируем клики по рекламному баннеру

plt.hist(data_frame['clicks'], bins=20)
plt.xlabel('Количество кликов')
plt.ylabel('Количество пользователей')
plt.title('Распределение кликов пользователей по рекламному баннеру')
plt.show()

Построение кумулятивной гистограммы (cumulative=True)

plt.hist(data, bins=30, cumulative=True)
plt.show()

Использование histtype для изменения типа гистограммы (‘bar’, ‘barstacked’, ‘step’, ‘stepfilled’)

plt.hist(data, bins=30, histtype='stepfilled')
plt.show()

Заключение

Краткое повторение основных моментов

В этой статье мы рассмотрели основы построения гистограмм с использованием библиотеки Matplotlib в Python. Мы научились создавать базовые гистограммы, настраивать их внешний вид, добавлять подписи и заголовки, работать с несколькими гистограммами на одном графике, нормировать гистограммы и сохранять их в файл. Также были представлены продвинутые техники, такие как использование стилей, построение гистограмм на основе DataFrame Pandas и изменение типа гистограммы.

Дополнительные ресурсы для изучения Matplotlib


Добавить комментарий