Функция 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, что приводит к более четким и информативным визуализациям данных. Выберите метод, наиболее подходящий для ваших потребностей и желаемого уровня контроля.