Совмещение двух гистограмм в одном графике: метод ax.hist()

Пройдите тест, узнайте какой профессии подходите

Я предпочитаю
0%
Работать самостоятельно и не зависеть от других
Работать в команде и рассчитывать на помощь коллег
Организовывать и контролировать процесс работы

Быстрый ответ

Для одновременного отображения двух гистограмм на одной диаграмме в Python с использованием библиотеки matplotlib, необходимо для каждого массива данных вызвать метод plt.hist(). Параметр alpha контролирует уровень прозрачности гистограмм. Это особенно полезно при их совмещении.

Python
Скопировать код
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, создает полупрозрачные гистограммы, благодаря чему пересечения становятся видимыми. Его можно оптимизировать в соответствии с желаемой прозрачностью наложения гистограмм.

Кинга Идем в IT: пошаговый план для смены профессии

Планирование ваших гистограмм

Качество гистограмм в значительной степени зависит от правильного выбора размеров интервалов, цветов и корректной нормализации данных. Это особенно важно при сравнении разных наборов данных.

Совпадение границ интервалов

Сопоставимость гистограмм обеспечивается одинаковыми границами интервалов:

Python
Скопировать код
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')

Нормализация гистограмм

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

Python
Скопировать код
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:

Python
Скопировать код
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')

Правильное использование цветов и меток

Использование цветов и меток делает данные более наглядными:

Python
Скопировать код
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().

Визуализация

Демонстрация данных в действии:

Markdown
Скопировать код
🔵 Набор данных 1 = Прохладные океанские волны информации.
🔴 Набор данных 2 = Жгучая лава открытий, извергаемая из вулкана данных.

Пример данных:

Python
Скопировать код
ax.hist(dataset_ocean, color='blue', alpha=0.5)
ax.hist(dataset_volcano, color='red', alpha=0.5)

В итоге:

Markdown
Скопировать код
💜 Сочетая оба цвета, мы получаем фиолетовое облако перемешанных данных.

Таким подходом можно визуально исследовать взаимодействия между различными наборами данных.

Продвинутые приемы и исправление ошибок

Препятствие скрытию данных

Для того, чтобы гистограммы не скрывали друг друга, можно:

  • Сдвигать интервалы.
  • Использовать прозрачность цветов.
  • Настроить параметр zorder.

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

Веса могут быть полезны для балансировки выборок разного размера:

Python
Скопировать код
# Предположим, что 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() для создания данных:

Python
Скопировать код
import random

# Генерация случайных данных
data_demo = [random.gauss(mu, sigma) for _ in range(1000)]

Очистка осей для новых графиков

Очистка осей позволяет избежать смешения с предыдущими гистограммами:

Python
Скопировать код
plt.cla()  # Очистить текущую ось
plt.clf()  # Очистить весь рисунок

Полезные материалы

  1. python – Plot two histograms on single chart – Stack Overflow — Обсуждение методов построения двух гистограмм.
  2. Размеры гистограмм — Документация Matplotlib — Инструкция по созданию гистограмм, включая отображение нескольких гистограмм на одном графике.
  3. Seaborn.histplot — документация Seaborn — Расширенные возможности гистограмм в Seaborn.
  4. Быстрый старт NumPy — Руководство NumPy — Основы использования NumPy для обработки данных и определения интервалов.
  5. Визуализация данных с помощью Pandas — документация Pandas — Построение графиков с использованием Pandas.
  6. Работа с субплотами в Matplotlib — Документация Matplotlib — Организация графиков, используя субплоты, для сопоставления гистограмм.
  7. Интерактивные гистограммы Plotly — Добавление интерактивности в гистограммы.