Как построить круговую диаграмму в питоне
Перейти к содержимому

Как построить круговую диаграмму в питоне

  • автор:

Как создать круговую диаграмму в Seaborn

Как создать круговую диаграмму в Seaborn

В библиотеке визуализации данных Python Seaborn нет функции по умолчанию для создания круговых диаграмм, но вы можете использовать следующий синтаксис в Matplotlib для создания круговой диаграммы и добавления цветовой палитры Seaborn:

import matplotlib.pyplot as plt import seaborn as sns #define data data = [value1, value2, value3, . ] labels = ['label1', 'label2', 'label3', . ] #define Seaborn color palette to use colors = sns.color_palette('pastel')[ 0:5 ] #create pie chart plt.pie(data, labels = labels, colors = colors, autopct='%.0f%%') plt.show() 

Полный список цветовых палитр см. в документации Seaborn.

В следующих примерах показано, как использовать этот синтаксис на практике.

Пример 1. Круговая диаграмма с цветовой палитрой Pastel Seaborn

В следующем коде показано, как создать круговую диаграмму с использованием « пастельной » цветовой палитры Seaborn:

import matplotlib.pyplot as plt import seaborn as sns #define data data = [15, 25, 25, 30, 5] labels = ['Group 1', 'Group 2', 'Group 3', 'Group 4', 'Group 5'] #define Seaborn color palette to use colors = sns.color_palette('pastel')[ 0:5 ] #create pie chart plt.pie(data, labels = labels, colors = colors, autopct='%.0f%%') plt.show() 

Пример 2. Круговая диаграмма с цветовой палитрой Bright Seaborn

В следующем коде показано, как создать круговую диаграмму с использованием « яркой » цветовой палитры Seaborn:

import matplotlib.pyplot as plt import seaborn as sns #define data data = [15, 25, 25, 30, 5] labels = ['Group 1', 'Group 2', 'Group 3', 'Group 4', 'Group 5'] #define Seaborn color palette to use colors = sns.color_palette('bright')[ 0:5 ] #create pie chart plt.pie(data, labels = labels, colors = colors, autopct='%.0f%%') plt.show() 

Эти два примера иллюстрируют, как создать круговую диаграмму с двумя разными цветовыми палитрами Seaborn.

Тем не менее, есть еще много стилей, которые вы могли бы использовать. Полный список цветовых палитр см. в онлайн-документации .

Как построить круговую диаграмму в питоне

Программирование на C++ в Unreal Engine 5

Программирование на C++ в Unreal Engine 5

Данный курс научит Вас созданию игр на C++ в Unreal Engine 5. Курс состоит из 12 разделов, в которых Вас ждёт теория и практика. Причём, в качестве практики будет создан весьма крупный проект объёмом свыше 5000 строк качественного кода, который уже на практике познакомит Вас с принципами создания игр на C++ в Unreal Engine 5.

Параллельно с курсом Вы также будете получать домашние задания, результатом которых станет, в том числе, полноценная серьёзная работа для портфолио.

Помимо самого курса Вас ждёт ещё и очень ценный Бонус: «Тестирование Unreal-проектов на Python», в рамках которого Вы научитесь писать очень полезные тесты для тестирования самых разных аспектов разработки игр.

Уроки и статьи

Подпишитесь на мой канал на YouTube, где я регулярно публикую новые видео.

YouTube

Подписаться

Подписавшись по E-mail, Вы будете получать уведомления о новых статьях.

Подписка

Подписаться

Добавляйтесь ко мне в друзья ВКонтакте! Отзывы о сайте и обо мне оставляйте в моей группе.

Мой аккаунт

Мой аккаунт Моя группа

Какая тема Вас интересует больше?

Рисуем гистограммы, столбчатые и круговые диаграммы

На этом занятии мы продолжим знакомство с разными типами двумерных графиков и увидим, как можно строить столбчатые и круговые диаграммы.

Гистограмма и столбчатые диаграммы

Иногда данные требуется сгруппировать по определенным диапазонам и подсчитать сколько значений попадает в тот или иной интервал. Для выполнения такой задачи хорошо подходят столбчатые диаграммы и довольно известный их вид – это гистограмма распределения случайной величины.

Давайте сгенерируем вектор из 500 случайных величин и выведем их в виде гистограммы, используя функцию hist():

import numpy as np import matplotlib.pyplot as plt fig = plt.figure(figsize=(6, 4)) ax = fig.add_subplot() y = np.random.normal(0, 2, 500) ax.hist(y) ax.grid() plt.show()

На выходе получим следующее изображение распределения нормальной СВ:

Фактически, мы здесь имеем набор столбиков, высота которых определяется числом СВ, попавших в тот или иной диапазон. Причем, по умолчанию функция hist() разбивает весь интервал на равных 10 диапазонов. Если требуется изменить это число, то мы можем его указать вторым параметром:

ax.hist(y, 50)

Прежний интервал теперь разбит на 50 диапазонов, столбиков стало больше и они выглядят тоньше.

Функции bar() и barh()

Похожий график можно сформировать и с помощью функции bar. Ей на вход, в самом простом варианте, нужно передать список отметок для столбцов x и значения высот каждого столбца y:

x = [f'H' for i in range(10)] y = np.random.randint(1, 5, len(x)) ax.bar(x, y)

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

y = np.random.normal(0, 2, 500) x = np.linspace(np.min(y), np.max(y), 10)

Затем, подсчитаем, сколько величин попало в соответствующий диапазон и выведем список bars с помощью функции bar():

bars = [len(y[np.bitwise_and(y >= x[i], y  x[i+1])]) for i in range(len(x)-1)] ax.bar(range(len(x)-1), bars)

Как видите, у нас получилось изображение аналогичное гистограмме. Только пришлось предварительно подготовить данные, что не очень удобно. Поэтому, когда нужно вывести распределение величин по диапазонам, то проще использовать функцию hist().

Если нам нужно отображать столбики относительно оси ординат, то для этого существует функция barh(), которая работает аналогично функции bar():

ax.barh(range(len(x)-1), bars)

В итоге, график будет выглядеть, следующим образом:

Круговая диаграмма в Matplotlib

Посмотрите мой отчёт по питанию за предыдущий месяц. Видите там круговую диаграмму? Сейчас мы сделаем точно такую же с помощью Python и Matplotlib.

Овощи, фрукты, ягоды 21,79
Молочные 20,18
Мясные 18,82
Орешки 13,64
Рыба и морепродукты 10,30
Хлебобулочные 5,18
Чай, кофе, какао-порошки 4,69
Крупы 3,06
Приправы 1,98
Напитки 0,35

Введём эти данные в Python (в качестве IDE я использовал Spyder 3):

import matplotlib . pyplot as plt
labels = [ ‘Овощи, фрукты, ягоды’ ,
‘Рыба и морепродукты’ ,
‘Хлебобулочные’ ,
‘Чай, кофе, какао-порошки’ ,
values = [ 21.79 ,

Теперь построим круговую диаграмму:

fig1 , ax1 = plt . subplots ( )
ax1 . pie ( sizes , labels = labels )

Функция subplots ( ) возвращает объект Figure и объект Axes . Объект Figure — это базовый объект для всех графиков. Нам он пока не особо нужен. Объект Axes — это объект, который содержит все прямоугольники, линии и т. д. С помощью Axes мы и будем рисовать круговую диаграмму. Вызов ax1 . pie — это и есть построение нашей круговой диаграммы.

Результат получился таким:

Matplotlib pie

Как видим, результат получился не очень. Вместо круга получился эллипс. Это можно легко исправить добавив ax1 . axis ( ‘equal’ ) , который укажет, что соотношение длины и ширины диаграммы должны быть одинаковы:

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

Ваш адрес email не будет опубликован. Обязательные поля помечены *