Вложенные круговые диаграммы с использованием Matplotlib

Beginner

This tutorial is from open-source community. Access the source code

Введение

Круговые диаграммы - популярные инструменты визуализации данных, которые представляют данные в круговой форме. Однако бывают ситуации, когда вы хотите создать вложенную версию круговой диаграммы, которая называется тортирольной диаграммой. В этом руководстве мы проведем вас по созданию вложенных круговых диаграмм с использованием Matplotlib, популярной библиотеки визуализации данных в Python.

Советы по работе с ВМ

После запуска ВМ нажмите в левом верхнем углу, чтобы переключиться на вкладку Notebook и получить доступ к Jupyter Notebook для практики.

Иногда вам может потребоваться подождать несколько секунд, пока Jupyter Notebook не загрузится полностью. Валидация операций не может быть автоматизирована из-за ограничений в Jupyter Notebook.

Если вы столкнетесь с проблемами во время обучения, не стесняйтесь обращаться к Labby. Оставьте отзыв после занятия, и мы оперативно решим проблему для вас.

Импортируем необходимые библиотеки

Во - первых, нам нужно импортировать необходимые библиотеки. В данном случае нам нужны Matplotlib и numpy.

import matplotlib.pyplot as plt
import numpy as np

Создаем вложенную круговую диаграмму с использованием ax.pie

Мы можем создать вложенную круговую диаграмму с использованием метода ax.pie. Сначала мы сгенерируем некоторые фальшивые данные, соответствующие трем группам. В внутреннем круге мы будем рассматривать каждое число как принадлежащее своей собственной группе. В внешнем круге мы будем отображать их как членов их исходных трех групп.

fig, ax = plt.subplots()

size = 0.3
vals = np.array([[60., 32.], [37., 40.], [29., 10.]])

cmap = plt.colormaps["tab20c"]
outer_colors = cmap(np.arange(3)*4)
inner_colors = cmap([1, 2, 5, 6, 9, 10])

ax.pie(vals.sum(axis=1), radius=1, colors=outer_colors,
       wedgeprops=dict(width=size, edgecolor='w'))

ax.pie(vals.flatten(), radius=1-size, colors=inner_colors,
       wedgeprops=dict(width=size, edgecolor='w'))

ax.set(aspect="equal", title='Pie plot with `ax.pie`')
plt.show()

Создаем вложенную круговую диаграмму с использованием ax.bar

Мы также можем создать вложенную круговую диаграмму с использованием метода ax.bar на осях с полярной системой координат. Это может дать больше гибкости при точном дизайне графика.

fig, ax = plt.subplots(subplot_kw=dict(projection="polar"))

size = 0.3
vals = np.array([[60., 32.], [37., 40.], [29., 10.]])
## Нормализуем vals до 2 pi
valsnorm = vals/np.sum(vals)*2*np.pi
## Получаем ординаты краев столбцов
valsleft = np.cumsum(np.append(0, valsnorm.flatten()[:-1])).reshape(vals.shape)

cmap = plt.colormaps["tab20c"]
outer_colors = cmap(np.arange(3)*4)
inner_colors = cmap([1, 2, 5, 6, 9, 10])

ax.bar(x=valsleft[:, 0],
       width=valsnorm.sum(axis=1), bottom=1-size, height=size,
       color=outer_colors, edgecolor='w', linewidth=1, align="edge")

ax.bar(x=valsleft.flatten(),
       width=valsnorm.flatten(), bottom=1-2*size, height=size,
       color=inner_colors, edgecolor='w', linewidth=1, align="edge")

ax.set(title="Pie plot with `ax.bar` and polar coordinates")
ax.set_axis_off()
plt.show()

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

Мы можем настроить вложенную круговую диаграмму, изменив цвета, добавив метки и настроив размер.

fig, ax = plt.subplots()

size = 0.3
vals = np.array([[60., 32.], [37., 40.], [29., 10.]])

cmap = plt.colormaps["tab20c"]
outer_colors = cmap(np.arange(3)*4)
inner_colors = cmap([1, 2, 5, 6, 9, 10])

## Добавляем метки
labels = ['Group 1', 'Group 2', 'Group 3']
ax.pie(vals.sum(axis=1), radius=1, colors=outer_colors,
       wedgeprops=dict(width=size, edgecolor='w'), labels=labels, labeldistance=0.7)

ax.pie(vals.flatten(), radius=1-size, colors=inner_colors,
       wedgeprops=dict(width=size, edgecolor='w'))

## Задаем заголовок
ax.set(aspect="equal", title='Nested Pie Chart')

plt.show()

Сохранение вложенной круговой диаграммы

Мы можем сохранить вложенную круговую диаграмму в виде изображения в форматах png, pdf или svg.

fig.savefig('nested_pie_chart.png', dpi=300, bbox_inches='tight')

Резюме

В этом уроке мы научились создавать вложенные круговые диаграммы в Matplotlib с использованием двух методов: ax.pie и ax.bar. Мы также узнали, как настраивать вложенную круговую диаграмму, добавляя метки, изменяя цвета и настраивая размер. Наконец, мы увидели, как сохранить вложенную круговую диаграмму в виде изображения в форматах png, pdf или svg.