Bar chart vs гистограмма: разница

Карьерник — квиз-тренажёр в Telegram с 1500+ вопросами для собесов аналитика. SQL, Python, A/B, метрики. Бесплатно.

Короткий ответ

  • Bar chart — для категориальных данных (выручка по категориям)
  • Histogram — для числовых данных (распределение возрастов)

У них разный смысл оси X.

Визуально

Bar chart

Category A |████████
Category B |████
Category C |██████
Category D |█████████

По X — дискретные категории (имена, не числа).

Histogram

Age 20-30 |██████████
Age 30-40 |█████████████
Age 40-50 |███████
Age 50-60 |████

По X — числовой интервал (bin).

Главные отличия

Bar chart Histogram
Данные по X категориальные числовые
Столбцы примыкают нет (пробелы) да (без пробелов)
Порядок можно менять фиксированный
Что показывает значение для каждой категории распределение числовой переменной
Сортировка можно by height нет (по X в порядке)

Примеры use cases

Bar chart

  • Revenue по категориям товаров
  • Количество пользователей по стране
  • Топ-10 товаров по продажам
  • Conversion rate по каналам
  • A/B тест: metric в control vs test

Histogram

  • Распределение возраста пользователей
  • Распределение чеков
  • Время отклика сервера
  • Размер сессии в минутах
  • Количество товаров в корзине

В Python

Bar chart

import matplotlib.pyplot as plt

categories = ['A', 'B', 'C', 'D']
values = [100, 50, 150, 200]

plt.bar(categories, values)
plt.xlabel('Category')
plt.ylabel('Revenue')
plt.show()

Или в pandas:

df.groupby('category')['revenue'].sum().plot(kind='bar')

Histogram

import matplotlib.pyplot as plt

ages = [25, 30, 35, 28, 45, 50, 60, ...]

plt.hist(ages, bins=20)
plt.xlabel('Age')
plt.ylabel('Count')
plt.show()

Или в pandas:

df['age'].hist(bins=20)

Почему путают

Оба — «столбцы снизу вверх». Визуально похожи. Но смысл разный.

Ключевой признак:

  • По X числовые bin-ы → histogram
  • По X строковые категории → bar chart

Column chart vs bar chart

Мелочь, но иногда важно:

  • Column chart: вертикальные столбцы (по умолчанию)
  • Bar chart: горизонтальные

В русскоязычной литературе оба — «столбчатая».

Stacked / grouped bar

Stacked

Сумма по категориям внутри столбца:

┌──────┐
│Green │
├──────┤
│Blue  │
├──────┤
│Red   │
└──────┘
 A

Grouped

Каждая под-категория — отдельный столбец рядом:

█  █  █  (A)
█  █  █  (B)
█  █  █  (C)
Red Green Blue

Histogram variations

Density histogram

Вместо частоты — плотность (sum всех bin = 1).

plt.hist(x, bins=30, density=True)

Для сравнения распределений разного размера.

2D histogram

Две числовые переменные:

plt.hist2d(x, y, bins=30)

KDE (kernel density estimation)

Сглаженный hist:

import seaborn as sns
sns.histplot(x, kde=True)

Когда НЕ использовать bar chart

1. Для распределения числовой переменной

Используйте histogram, а не bar chart.

2. Для тренда во времени

Используйте line chart.

3. Для сравнения связи X-Y

Используйте scatter plot.

4. Для частей целого

Pie chart (хотя часто bar chart тоже работает).

Когда НЕ использовать histogram

1. Для категорий

Используйте bar chart.

2. Для малого числа значений

Если есть только 5 уникальных значений — bar chart покажет чётче.

3. Для очень длинного хвоста

Log scale или обрезать по P99.

Частые ошибки

1. Histogram с пропусками

Если между bin-ами есть пустые — возможно слишком мелкие bins.

2. Bar chart с числовой осью

Если x-ось — числа, может быть нужен scatter plot или line.

3. Неправильный порядок в bar chart

По высоте или по значению категории? Зависит от задачи.

4. Мало bins в histogram

5 bins может скрыть структуру. 50 bins — показать шум. Обычно 20-30.

5. Сравнение групп одним цветом

Используйте hue / multiple colors.

На собесе

«Чем отличается bar chart от histogram?» Bar chart — для категорий. Histogram — для числовых данных, показывает распределение.

«Когда column / bar / pie?» Column / bar — для сравнения. Pie — для долей целого (но часто bar лучше).

«Как выбрать количество bins?» Sturges: log2(N) + 1. Обычно 20-30.

Связанные темы

FAQ

Bar chart или pie chart?

Bar обычно лучше — точнее сравнение значений. Pie — для 2-5 категорий.

Horizontal или vertical bar?

Horizontal — если категорий много / имена длинные. Vertical — по умолчанию.

Histogram или box plot?

Histogram — полное распределение. Box plot — быстрое сравнение нескольких групп.

Line chart вместо histogram?

Line не показывает частоту. Нет.


Тренируйте визуализацию — откройте тренажёр с 1500+ вопросами для собесов.