Совмещение двух гистограмм в одном графике: метод ax.hist()
Быстрый ответ
Для одновременного отображения двух гистограмм на одной диаграмме в Python с использованием библиотеки matplotlib
, необходимо для каждого массива данных вызвать метод plt.hist()
. Параметр alpha
контролирует уровень прозрачности гистограмм. Это особенно полезно при их совмещении.
import matplotlib.pyplot as plt
# Замените эти данные на свои
data1 = [data_values_1]
data2 = [data_values_2]
# С помощью полупрозрачности можно проследить пересечения гистограмм
plt.hist(data1, alpha=0.5, label='Набор данных 1')
plt.hist(data2, alpha=0.5, label='Набор данных 2')
# Добавляем легенду и выводим график на экран
plt.legend()
plt.show()
Выбор значений для параметра alpha
, например с alpha=0.5
, создает полупрозрачные гистограммы, благодаря чему пересечения становятся видимыми. Его можно оптимизировать в соответствии с желаемой прозрачностью наложения гистограмм.
Планирование ваших гистограмм
Качество гистограмм в значительной степени зависит от правильного выбора размеров интервалов, цветов и корректной нормализации данных. Это особенно важно при сравнении разных наборов данных.
Совпадение границ интервалов
Сопоставимость гистограмм обеспечивается одинаковыми границами интервалов:
import numpy as np
# Определение границ интервалов
bins = np.linspace(start, end, num_bins)
plt.hist(data1, bins=bins, alpha=0.5, label='Набор данных 1')
plt.hist(data2, bins=bins, alpha=0.5, label='Набор данных 2')
Нормализация гистограмм
При сравнении наборов данных разного размера следует применять нормализацию гистограмм, чтобы можно было сопоставить их формы:
plt.hist(data1, bins=bins, alpha=0.5, density=True, label='Набор данных 1')
plt.hist(data2, bins=bins, alpha=0.5, density=True, label='Набор данных 2')
Такой подход нормализации делает площадь под каждой гистограммой равной 1, тем самым обеспечивая их сопоставимость.
Работа с различными масштабами
Если гистограммы имеют разный масштаб, метод twinx()
будет полезен для создания второй оси Y:
fig, ax1 = plt.subplots()
ax2 = ax1.twinx()
ax1.hist(data1, alpha=0.5, label='Набор данных 1')
ax2.hist(data2, alpha=0.5, label='Набор данных 2', color='red')
Правильное использование цветов и меток
Использование цветов и меток делает данные более наглядными:
plt.hist(data1, bins=bins, color='skyblue', alpha=0.7, label='Данные 1')
plt.hist(data2, bins=bins, color='salmon', alpha=0.7, label='Данные 2')
Метки играют ключевую роль при работе с наложенными гистограммами. Используйте их совместно с plt.legend()
.
Визуализация
Демонстрация данных в действии:
🔵 Набор данных 1 = Прохладные океанские волны информации.
🔴 Набор данных 2 = Жгучая лава открытий, извергаемая из вулкана данных.
Пример данных:
ax.hist(dataset_ocean, color='blue', alpha=0.5)
ax.hist(dataset_volcano, color='red', alpha=0.5)
В итоге:
💜 Сочетая оба цвета, мы получаем фиолетовое облако перемешанных данных.
Таким подходом можно визуально исследовать взаимодействия между различными наборами данных.
Продвинутые приемы и исправление ошибок
Препятствие скрытию данных
Для того, чтобы гистограммы не скрывали друг друга, можно:
- Сдвигать интервалы.
- Использовать прозрачность цветов.
- Настроить параметр
zorder
.
Использование весов для гистограмм
Веса могут быть полезны для балансировки выборок разного размера:
# Предположим, что weight1 и weight2 – это веса для каждого отдельного элемента данных
plt.hist(data1, weights=weight1, bins=bins, alpha=0.6, label='Взвешенный набор данных 1')
plt.hist(data2, weights=weight2, bins=bins, alpha=0.6, label='Взвешенный набор данных 2')
Генерация данных для примеров
Для демонстрационных целей удобно использовать random.gauss()
для создания данных:
import random
# Генерация случайных данных
data_demo = [random.gauss(mu, sigma) for _ in range(1000)]
Очистка осей для новых графиков
Очистка осей позволяет избежать смешения с предыдущими гистограммами:
plt.cla() # Очистить текущую ось
plt.clf() # Очистить весь рисунок
Полезные материалы
- python – Plot two histograms on single chart – Stack Overflow — Обсуждение методов построения двух гистограмм.
- Размеры гистограмм — Документация Matplotlib — Инструкция по созданию гистограмм, включая отображение нескольких гистограмм на одном графике.
- Seaborn.histplot — документация Seaborn — Расширенные возможности гистограмм в Seaborn.
- Быстрый старт NumPy — Руководство NumPy — Основы использования NumPy для обработки данных и определения интервалов.
- Визуализация данных с помощью Pandas — документация Pandas — Построение графиков с использованием Pandas.
- Работа с субплотами в Matplotlib — Документация Matplotlib — Организация графиков, используя субплоты, для сопоставления гистограмм.
- Интерактивные гистограммы Plotly — Добавление интерактивности в гистограммы.