Data Visualization

Мастерство гистограмм Matplotlib: точный контроль над интервалами

Spread the love

Функция hist() библиотеки Matplotlib предоставляет мощные инструменты для визуализации распределения данных. Однако ее автоматическое разбиение на интервалы по умолчанию иногда может скрывать важные детали или приводить к неправильным интерпретациям. Точный контроль над размером интервала необходим для создания точных и информативных визуализаций. В этой статье рассматриваются два эффективных метода для достижения этого.

Содержание

Прямое указание границ интервалов

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


import matplotlib.pyplot as plt
import numpy as np

# Пример данных
data = np.random.randn(1000)

# Определение границ интервалов (например, интервалы шириной 0.5 от -4 до 4)
bin_edges = np.arange(-4, 4.1, 0.5)  

# Создание гистограммы
plt.hist(data, bins=bin_edges)
plt.xlabel("Значение")
plt.ylabel("Частота")
plt.title("Гистограмма с явно заданными границами интервалов")
plt.show()

Этот код генерирует гистограмму с интервалами шириной 0.5 в диапазоне от -4 до 4. Массив bin_edges точно определяет границы каждого интервала. Последнее значение в bin_edges задает верхний предел последнего интервала. Точки данных за пределами этого диапазона будут исключены. Настройте bin_edges по мере необходимости, чтобы охватить ваши данные и желаемую ширину интервала.

Расчет интервалов по заданной ширине

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


import matplotlib.pyplot as plt
import numpy as np

# Пример данных
data = np.random.randn(1000)

# Желаемая ширина интервала
bin_width = 0.5

# Расчет количества интервалов
data_min = np.min(data)
data_max = np.max(data)
num_bins = int((data_max - data_min) / bin_width)

# Создание гистограммы
plt.hist(data, bins=num_bins)
plt.xlabel("Значение")
plt.ylabel("Частота")
plt.title("Гистограмма с рассчитанным количеством интервалов")
plt.show()

# Для более тонкого контроля явно рассчитайте границы интервалов:
bin_edges = np.linspace(data_min, data_max, num_bins + 1) # Используйте linspace для равномерного распределения
plt.hist(data, bins=bin_edges)
plt.xlabel("Значение")
plt.ylabel("Частота")
plt.title("Гистограмма с точно рассчитанными границами интервалов")
plt.show()

Этот код сначала вычисляет num_bins. Затем Matplotlib использует это значение для автоматической корректировки границ интервалов, гарантируя включение всех точек данных. Вторая часть демонстрирует, как рассчитать bin_edges для более точного контроля. Обратите внимание, что Matplotlib может незначительно скорректировать эти границы.

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

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

Ваш адрес email не будет опубликован. Обязательные поля помечены *