Столбчатые и круговые диаграммы
Линейный график показывает изменение во времени. А если нужно сравнить категории — товары, города, языки — подходят столбчатые диаграммы. Для долей целого — круговые.
Столбчатая диаграмма
import matplotlib.pyplot as plt
fruits = ["яблоки", "груши", "сливы"]
kg = [120, 75, 40]
plt.bar(fruits, kg)
plt.title("Урожай, кг")
plt.bar(категории, высоты) рисует по столбцу на каждую категорию. Категории могут быть строками — они станут подписями под столбцами в том же порядке.
Оформление:
plt.bar(fruits, kg, color="tab:green", width=0.5, edgecolor="black")
color может быть и списком — по цвету на каждый столбец: color=["red", "green", "blue"].
Порядок столбцов
Столбцы идут в том порядке, в каком переданы данные. Чтобы диаграмма читалась легко, их обычно сортируют — сначала данные, потом рисование:
pairs = sorted(zip(kg, fruits), reverse=True) # по убыванию урожая
plt.bar([f for _, f in pairs], [k for k, _ in pairs])
Горизонтальные столбцы
Когда названий много или они длинные, удобнее горизонтальная диаграмма:
plt.barh(["Москва", "Санкт-Петербург", "Новосибирск"], [13.1, 5.6, 1.6])
plt.xlabel("Население, млн")
У barh категории — по вертикальной оси (первая — внизу), а длины — по горизонтальной.
Подписи значений над столбцами
bars = plt.bar(fruits, kg)
plt.bar_label(bars) # число над каждым столбцом
Столбцы рядом
Чтобы сравнить две серии по одним категориям, столбцы сдвигают:
import numpy as np
x = np.arange(len(fruits))
plt.bar(x - 0.2, [120, 75, 40], width=0.4, label="2025")
plt.bar(x + 0.2, [100, 90, 55], width=0.4, label="2026")
plt.xticks(x, fruits) # подписи категорий под парами столбцов
plt.legend()
Круговая диаграмма
Круговая диаграмма показывает, какую долю целого составляет каждая часть:
plt.pie([45, 30, 25], labels=["жильё", "еда", "прочее"], autopct="%1.0f%%")
- значения не обязаны быть процентами: matplotlib сам делит каждое на сумму;
labels— подписи секторов;autopct— подписать проценты на секторах ("%1.1f%%"— с одним знаком после запятой).
Секторы с нулевым значением рисовать бессмысленно — их лучше убрать из данных заранее.
Круговая диаграмма хороша для 2–6 частей. Когда частей больше или они близки по размеру, столбцы читаются лучше: человеческий глаз плохо сравнивает углы.
Итог
plt.bar(категории, значения)— вертикальные столбцы,plt.barh— горизонтальные;- порядок столбцов = порядок данных; сортируй заранее;
color,width,bar_label— оформление; сдвиг поx— столбцы рядом;plt.pie(значения, labels=...)— доли целого,autopct— проценты на секторах.