Короткий ответ
Усечённая ось Y нарушает пропорциональность длины столбцов значению и визуально преувеличивает разницу; для столбчатых диаграмм ось нужно начинать с нуля или использовать другой тип графика для акцента на деталях.
Как это работает подробнее
В столбчатой диаграмме длина столбца — это основной визуальный сигнал величины; если ось обрезана, равные по смыслу различия выглядят непропорционально большими.
Пример кода
example.py
import matplotlib.pyplot as plt
categories = ["A", "B"]
values = [102, 98]
fig, axes = plt.subplots(1, 2, figsize=(8, 3))
axes[0].bar(categories, values)
axes[0].set_ylim(95, 105) # misleading: разница ~4% выглядит как десятки процентов
axes[0].set_title("Misleading")
axes[1].bar(categories, values)
axes[1].set_ylim(0, 110) # correct
axes[1].set_title("Correct")Что использовать на практике
- Рекомендация. Всегда начинайте ось Y с нуля для bar/column chart.
- Рекомендация. Если нужно показать небольшие изменения детально, используйте линейный график или явно обозначайте разрыв оси.
Подводные камни
- Риск. Автоматическая обрезка оси библиотекой по умолчанию без проверки.
- Риск. Слепое применение правила «ось всегда с нуля» и к линейным графикам, где оно не обязательно, если цель — показать тренд, а не абсолютное сравнение величин.