Создание круговых диаграмм в Matplotlib: полное руководство

Введение в круговые диаграммы в Matplotlib

Что такое круговая диаграмма и когда ее использовать

Круговая диаграмма (или секторная диаграмма) — это графическое представление данных в виде круга, разделенного на секторы. Каждый сектор отображает долю от общего объема. Круговые диаграммы полезны для визуализации относительных пропорций различных категорий внутри единого целого. Они особенно эффективны, когда нужно показать, как отдельные части составляют 100%.

Использовать круговые диаграммы стоит, когда:

  • Нужно показать относительные доли нескольких категорий.
  • Общее количество категорий невелико (обычно не более 5-7), чтобы диаграмма оставалась читаемой.
  • Важно подчеркнуть вклад каждой категории в общее целое.

Преимущества и недостатки использования круговых диаграмм

Преимущества:

  • Легко понять: Даже неподготовленный зритель быстро поймет, что представляет собой круговая диаграмма.
  • Наглядное представление долей: Круговая форма сразу показывает соотношение между категориями.
  • Подходит для презентаций: Визуально привлекательна и хорошо воспринимается аудиторией.

Недостатки:

  • Ограниченное количество категорий: При большом количестве секторов диаграмма становится перегруженной и нечитаемой.
  • Сложно сравнивать размеры секторов: Человеческому глазу трудно точно оценить разницу между близкими по размеру секторами.
  • Не подходит для анализа трендов: Круговая диаграмма показывает данные только на один момент времени.

Необходимые библиотеки и их импорт

Для создания круговых диаграмм в Python понадобится библиотека matplotlib. Также часто используется библиотека numpy для работы с массивами данных и pandas для работы с DataFrame.

import matplotlib.pyplot as plt
import numpy as np
import pandas as pd

Базовая круговая диаграмма в Matplotlib

Функция plt.pie(): синтаксис и основные параметры

Основная функция для создания круговых диаграмм в matplotlibplt.pie(). Вот ее упрощенный синтаксис:

plt.pie(x, labels=None, autopct=None, explode=None, shadow=False, startangle=0)
  • x: Массив или список значений, представляющих размеры секторов.
  • labels: Список меток для каждого сектора.
  • autopct: Строка формата для отображения процентных значений на секторах.
  • explode: Массив, определяющий, насколько далеко от центра сместить каждый сектор.
  • shadow: Булево значение, определяющее, добавлять ли тень к диаграмме.
  • startangle: Угол (в градусах), с которого начинается отрисовка первого сектора (по умолчанию 0, то есть справа).

Создание простой круговой диаграммы с метками и значениями

Пример создания простой круговой диаграммы, отображающей доли рекламного бюджета, распределённые по каналам:

import matplotlib.pyplot as plt
from typing import List

def create_basic_pie_chart(sizes: List[float], labels: List[str], title: str = "Распределение рекламного бюджета") -> None:
    """Создает простую круговую диаграмму."""
    plt.figure(figsize=(6, 6))  # Устанавливаем размер фигуры
    plt.pie(sizes, labels=labels, autopct='%1.1f%%')
    plt.title(title)
    plt.show()

# Данные для диаграммы
budget_shares = [30, 25, 15, 10, 20]
channel_labels = ['Контекстная реклама', 'SEO', 'SMM', 'Email-маркетинг', 'Таргетированная реклама']

create_basic_pie_chart(budget_shares, channel_labels)

Настройка цветов и стилей секторов

Цвета секторов можно настроить с помощью параметра colors в функции plt.pie(). Можно указать список названий цветов, hex-кодов или RGB-значений.

import matplotlib.pyplot as plt
from typing import List

def create_colored_pie_chart(sizes: List[float], labels: List[str], colors: List[str], title: str = "Распределение рекламного бюджета") -> None:
    """Создает круговую диаграмму с указанными цветами."""
    plt.figure(figsize=(6, 6))
    plt.pie(sizes, labels=labels, autopct='%1.1f%%', colors=colors)
    plt.title(title)
    plt.show()

# Данные для диаграммы
budget_shares = [30, 25, 15, 10, 20]
channel_labels = ['Контекстная реклама', 'SEO', 'SMM', 'Email-маркетинг', 'Таргетированная реклама']
channel_colors = ['#ff9999','#66b3ff','#99ff99','#ffcc99','#c2c2f0']

create_colored_pie_chart(budget_shares, channel_labels, channel_colors)

Настройка внешнего вида круговой диаграммы

Изменение углов начала и направления отрисовки

Параметр startangle задает угол, с которого начинается отрисовка первого сектора (по умолчанию 0 градусов, то есть справа). Параметр counterclock определяет направление отрисовки (по часовой стрелке, если False, и против часовой стрелки, если True).

import matplotlib.pyplot as plt
from typing import List

def create_pie_chart_with_rotation(sizes: List[float], labels: List[str], startangle: int, counterclock: bool, title: str = "Распределение рекламного бюджета") -> None:
    """Создает круговую диаграмму с заданным углом начала и направлением отрисовки."""
    plt.figure(figsize=(6, 6))
    plt.pie(sizes, labels=labels, autopct='%1.1f%%', startangle=startangle, counterclock=counterclock)
    plt.title(title)
    plt.show()

# Данные для диаграммы
budget_shares = [30, 25, 15, 10, 20]
channel_labels = ['Контекстная реклама', 'SEO', 'SMM', 'Email-маркетинг', 'Таргетированная реклама']

create_pie_chart_with_rotation(budget_shares, channel_labels, startangle=90, counterclock=False)

Установка расстояния между секторами (параметр explode)

Параметр explode позволяет немного


Добавить комментарий