Введение в гистограммы и 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
- Официальная документация Matplotlib: https://matplotlib.org/stable/contents.html
- Галерея примеров Matplotlib: https://matplotlib.org/stable/gallery/index.html