Функция Matplotlib pie()
Справочная документация Matplotlib
pie()Используется для построения круговых диаграмм, показывающих пропорциональное соотношение каждой части с целым.
Круговые диаграммы подходят для отображения пропорций небольшого числа категорий (обычно в пределах 5–8).
Определение функции
Интерфейс pyplot
matplotlib.pyplot.pie(x, explode=None, labels=None, colors=None,
autopct=None, pctdistance=0.6, shadow=False, labeldistance=1.1,
startangle=0, radius=1, counterclock=True, wedgeprops=None,
textprops=None, center=(0, 0), frame=False, rotatelabels=False, *,
normalize=True, hatch=None, **kwargs)
Интерфейс Axes
Axes.pie(x, explode=None, labels=None, colors=None, autopct=None,
pctdistance=0.6, shadow=False, labeldistance=1.1, startangle=0,
radius=1, counterclock=True, wedgeprops=None, textprops=None,
center=(0, 0), frame=False, rotatelabels=False, *,
normalize=True, hatch=None, **kwargs)
Описание параметра
| Параметр | Type | Описание |
|---|---|---|
| x | Одномерный массив (array-like) | Значение каждого сектора (обязательно), автоматически нормализуется. |
| explode | массивоподобный | Расстояние, на которое каждый сектор смещён от центра; 0 означает отсутствие смещения. |
| labels | list | Текст подписи для каждого сектора. |
| colors | list | Цвет каждого сектора. |
| autopct | str или callable | Автоматически отображать проценты, например '%1.1f%%' означает один знак после запятой; None скрывает их. |
| pctdistance | float | Коэффициент расстояния текста процентов от центра, по умолчанию 0.6. |
| shadow | bool | Добавлять ли эффект тени. |
| labeldistance | float | Коэффициент расстояния подписей от центра, по умолчанию 1.1. |
| startangle | float | Начальный угол первого сектора (против часовой стрелки); 0 означает начало от направления на 3 часа. |
| radius | float | Радиус круговой диаграммы, по умолчанию 1. |
| counterclock | bool | Направление сектора: True — против часовой стрелки (по умолчанию), False — по часовой стрелке. |
| wedgeprops | dict | Параметры, передаваемые каждому сектору (Wedge), например, {'edgecolor':'white', 'linewidth':1} |
| textprops | dict | Параметры, передаваемые тексту, например, {'fontsize':12, 'color':'gray'} |
| center | tuple | Координаты центра круговой диаграммы, по умолчанию (0, 0). |
| normalize | bool | Нормализовать ли x, чтобы сумма была равна 1; по умолчанию True. |
pie() возвращает три списка:
(patches, texts, autotexts)patches — это объекты секторов, texts — тексты подписей, а autotexts — тексты процентов.
Примеры использования
Пример 1: Базовая круговая диаграмма
Пример
# Данные
sizes = [30, 25, 20, 15, 10]
labels = ['Python', 'Java', 'JavaScript', 'C++', 'Go']
colors = ['#3498db', '#e74c3c', '#f39c12', '#2E7DCC', '#9b59b6']
fig, ax = plt.subplots(layout='constrained')
# Нарисовать круговую диаграмму
ax.pie(sizes, labels=labels, colors=colors,
autopct='%1.1f%%', # Отображать проценты с одним десятичным знаком
startangle=90, # Начать с направления на 12 часов
wedgeprops={'edgecolor': 'white', 'linewidth': 1})
ax.set_title('Использование языков программирования')
plt.show()
Пример 2: Выделение конкретного сектора (explode)
Пример
sizes = [35, 25, 20, 12, 8]
labels = ['Поиск', 'Социальные', 'Прямые', 'Электронная почта', 'Реферальные']
explode = (0.1, 0, 0, 0, 0) # Сместить первый сектор (Поиск) на 0.1
fig, ax = plt.subplots(layout='constrained')
wedges, texts, autotexts = ax.pie(
sizes, labels=labels, explode=explode,
autopct='%1.1f%%', startangle=90,
colors=['#2E7DCC', '#3498db', '#9b59b6', '#f39c12', '#e74c3c'],
wedgeprops={'edgecolor': 'white', 'linewidth': 1},
textprops={'fontsize': 11})
# Изменить цвет текста процентного значения
for autotext in autotexts:
autotext.set_color('white')
autotext.set_fontweight('bold')
ax.set_title('Источники трафика сайта', fontsize=14)
plt.show()
Пример 3: диаграмма-пончик (кольцевая диаграмма)
Пример
sizes = [40, 30, 20, 10]
labels = ['Chrome (40%)', 'Safari (30%)', 'Firefox (20%)', 'Другие (10%)']
fig, ax = plt.subplots(layout='constrained')
# Используйте wedgeprops, чтобы задать width и создать кольцевую диаграмму
wedges, texts = ax.pie(
sizes, labels=labels,
startangle=90,
colors=['#4285F4', '#346EA8', '#FBBC05', '#EA4335'],
wedgeprops={'width': 0.4, # Ширина сектора (0~1); если <1, то становится кольцевой диаграммой
'edgecolor': 'white', 'linewidth': 2})
ax.set_title('Доля рынка браузеров (кольцевая диаграмма)', fontsize=14)
plt.show()
Пример 4: Многоуровневая кольцевая диаграмма
Пример
# Данные внешнего слоя и данные внутреннего слоя
outer_sizes = [35, 30, 20, 15]
inner_sizes = [40, 30, 30]
outer_labels = ['Азия', 'Европа', 'Америка', 'Африка']
inner_labels = ['Мобильные', 'Настольные', 'Планшеты']
outer_colors = ['#FF6B6B', '#4ECDC4', '#45B7D1', '#71A0CE']
inner_colors = ['#FFE0B2', '#BBDEFB', '#C8D7E6']
fig, ax = plt.subplots(layout='constrained')
# Внешнее кольцо
ax.pie(outer_sizes, radius=1.3,
labels=outer_labels,
labeldistance=1.1,
colors=outer_colors,
wedgeprops={'width': 0.3, 'edgecolor': 'white', 'linewidth': 2})
# Внутреннее кольцо
ax.pie(inner_sizes, radius=1.0,
labels=inner_labels,
labeldistance=0.75,
colors=inner_colors,
wedgeprops={'width': 0.3, 'edgecolor': 'white', 'linewidth': 2})
ax.set_title('Многоуровневая кольцевая диаграмма', fontsize=14)
plt.show()
ЧАВО
Круговая диаграмма против столбчатой: когда что использовать?
Круговые диаграммы подходят для отображения пропорций до 5-8 категорий, позволяя читателям интуитивно понять долю от целого.
Когда категорий слишком много (больше 8) или требуется точное числовое сравнение, предпочтительнее использовать столбчатую диаграмму.
Объяснение формата autopct?
'%1.1f%%'Означает число с плавающей точкой с минимальной общей шириной в 1 цифру и 1 десятичным знаком, за которым следует%%(знак процента).
Вы также можете передать функцию, напримерautopct=lambda pct: f'{pct:.1f}%'。
Другие расширения