Вступление
В Python есть много библиотек визуализации данных, но Matplotlib - самая популярная из них. Популярность Matplotlib объясняется его надежностью и полезностью - он может создавать как простые, так и сложные графики с небольшим количеством кода. Вы также можете настроить графики различными способами.
В этом уроке мы расскажем, как построить круговую диаграмму в Matplotlib .
Круговые диаграммы представляют данные с разбивкой по категориям / ярлыкам. Это интуитивно понятный и простой способ визуализировать пропорциональные данные, например проценты.
Постройте круговую диаграмму в Matplotlib
Чтобы построить круговую диаграмму в Matplotlib, мы можем вызвать
pie()
экземпляра PyPlot или Axes
Единственный обязательный аргумент - это данные, которые мы хотим построить, например, объект из набора данных:
import matplotlib.pyplot as plt
x = [15, 25, 25, 30, 5]
fig, ax = plt.subplots()
ax.plot(x)
plt.show()
Это генерирует довольно простую, но понятную круговую диаграмму, в которой каждое значение назначается пропорционально большому сегменту круговой диаграммы:
{.ezlazyload}
Давайте добавим несколько меток, чтобы было легче различать, что здесь:
import matplotlib.pyplot as plt
x = [15, 25, 25, 30, 5]
labels = ['Very Likely', 'Likely', 'Unsure', 'Unlikely', 'Very Unlikely']
fig, ax = plt.subplots()
ax.pie(x, labels = labels)
ax.set_title('Survery responses')
plt.show()
Теперь круговая диаграмма будет содержать некоторые дополнительные данные, которые позволят нам немного легче ее интерпретировать:
{.ezlazyload}
Настройка круговых диаграмм в Matplotlib
При подготовке визуализаций данных для презентаций, документов или просто для того, чтобы поделиться ими с коллегами - вы можете немного стилизовать и настроить их, например, используя разные цвета, которые коррелируют с категориями, показывая проценты на срезах, а не просто полагаясь на визуальное восприятие, или взрывающиеся срезы, чтобы выделить их.
Давайте посмотрим, как Matplotlib позволяет нам настраивать круговые диаграммы.
Изменить цвета круговой диаграммы
Чтобы изменить цвета круговой диаграммы в Matplotlib, нам нужно
предоставить массив colors
аргументу цветов при его построении:
import matplotlib.pyplot as plt
x = [15, 25, 25, 30, 5]
labels = ['Very Likely', 'Likely', 'Unsure', 'Unlikely', 'Very Unlikely']
colors = ['tab:blue', 'tab:cyan', 'tab:gray', 'tab:orange', 'tab:red']
fig, ax = plt.subplots()
ax.pie(x, labels = labels, colors = colors)
ax.set_title('Survery responses')
plt.show()
Здесь мы создали действительно простую корреляцию между ответами и
назначенными им цветами. Very Likely
будет blue
в палитре Таблицы, а
Very Unlikely
будет red
.
Выполнение этого кода приводит к:
{.ezlazyload}
Показывать проценты на срезах
Глядя на круговую диаграмму, которую мы составили до сих пор, становится
ясно, что Unsure
и Likely
респондентов больше, чем других категорий
по отдельности. Хотя, это зачастую проще для нас обоих
интерпретировать круговой диаграммы визуально, так и численно.
Чтобы добавить числовые проценты к каждому фрагменту, мы используем
аргумент autopct
Он автоматически устанавливает процентные значения в
каждом сегменте / срезе и принимает стандартную нотацию форматирования
строк Python:
import matplotlib.pyplot as plt
x = [15, 25, 25, 30, 5]
labels = ['Very Likely', 'Likely', 'Unsure', 'Unlikely', 'Very Unlikely']
colors = ['tab:blue', 'tab:cyan', 'tab:gray', 'tab:orange', 'tab:red']
fig, ax = plt.subplots()
ax.pie(x, labels = labels, colors = colors, autopct='%.0f%%')
ax.set_title('Survery responses')
plt.show()
autopct
для %.0f%%
, мы выбрали форматирование процентов с помощью 0
десятичных знаков (только целые числа) и добавили %
в конце. Если бы
мы опускали окружающие %..%
, строки форматировались бы не как
проценты, а как буквальные значения.
Выполнение этого кода приводит к:
{.ezlazyload}
Расчленить / выделить клинья
Иногда важно выделить определенные записи. Например, в нашем опросе
очень небольшой процент респондентов считает появление чего-то, о чем
идет речь, Very Unlikely
. Предполагая, что мы хотели бы указать на
тот факт, что большинство людей не думают, что это маловероятно , мы
можем взорвать клин:
import matplotlib.pyplot as plt
x = [15, 25, 25, 30, 5]
labels = ['Very Likely', 'Likely', 'Unsure', 'Unlikely', 'Very Unlikely']
colors = ['tab:blue', 'tab:cyan', 'tab:gray', 'tab:orange', 'tab:red']
explode = [0, 0, 0, 0, 0.2]
fig, ax = plt.subplots()
ax.pie(x, labels = labels, colors = colors, autopct='%.0f%%', explode = explode)
ax.set_title('Survery responses')
plt.show()
explode
аргумент принимает массив значений, от 0..1
, где сами
значения определяют , как дальше клин от центра. По умолчанию все клинья
имеют значение разнесения 0
, поэтому все они связаны с центром.
Установка этого значения на 1
сильно смещает его по отношению к
диаграмме, поэтому обычно вы взрываете клинья на 0.1
, 0.2
, 0.3
и
аналогичные значения. Вы можете взорвать столько из них, сколько
захотите, с разными значениями, чтобы выделить разные категории.
Выполнение этого кода приводит к:
{.ezlazyload}
Добавление тени
Чтобы добавить тень на круговую диаграмму Matplotlib, все, что вам нужно
сделать, это установить для аргумента shadow
True
:
import matplotlib.pyplot as plt
x = [15, 25, 25, 30, 5]
labels = ['Very Likely', 'Likely', 'Unsure', 'Unlikely', 'Very Unlikely']
colors = ['tab:blue', 'tab:cyan', 'tab:gray', 'tab:orange', 'tab:red']
explode = [0, 0, 0, 0, 0.2]
fig, ax = plt.subplots()
ax.pie(x, labels = labels,
colors = colors,
autopct='%.0f%%',
explode = explode,
shadow = True)
ax.set_title('Survery responses')
plt.show()
Это приводит к:
{.ezlazyload}
Вращающаяся круговая диаграмма
Наконец, вы также можете повернуть диаграмму, установив начальный угол.
Пока что он начинается с 0 градусов (справа) и заполняет клинья против
часовой стрелки. startangle
аргумент startangle на число от 0 до
0..360
, вы можете сделать полный круг:
import matplotlib.pyplot as plt
x = [15, 25, 25, 30, 5]
labels = ['Very Likely', 'Likely', 'Unsure', 'Unlikely', 'Very Unlikely']
colors = ['tab:blue', 'tab:cyan', 'tab:gray', 'tab:orange', 'tab:red']
explode = [0, 0, 0, 0, 0.2]
fig, ax = plt.subplots()
ax.pie(x, labels = labels,
colors = colors,
autopct='%.0f%%',
explode = explode,
shadow = True,
startangle = 180)
ax.set_title('Survery responses')
plt.show()
В результате получается круговая диаграмма, повернутая на 180 градусов, эффективно переворачивая ее на другую сторону:
{.ezlazyload}
Заключение
В этом уроке мы рассмотрели, как построить простую круговую диаграмму в Matplotlib с помощью Python. Мы рассмотрели простые круговые диаграммы, а затем погрузились в то, как настроить их как для эстетических, так и для практических целей.
Если вас интересует визуализация данных и вы не знаете, с чего начать, обязательно ознакомьтесь с нашим комплектом книг по визуализации данных в Python{.ebook-link} :
::: {style=“border: 1px solid #ebebeb;padding: 15px;”} {.ebook-link}
Визуализация данных в Python
::: {.row} ::: {.col-md-4 .col-xs-12} {.ezlazyload .img-responsive .center-block} :::
::: {.col-md-8 .col-xs-12 .my-auto} Станьте опасными с визуализацией данных
✅ 30-дневная гарантия возврата денег без вопросов
✅ от начального до продвинутого
✅ Регулярно обновляется бесплатно (последнее обновление в апреле 2021 г.)
✅ Обновлено с бонусными ресурсами и руководствами ::: ::: :::
Визуализация данных в Python с помощью Matplotlib и Pandas - это книга, предназначенная для абсолютных новичков в работе с Pandas и Matplotlib с базовыми знаниями Python и позволяющая им создать прочную основу для расширенной работы с этими библиотеками - от простых графиков до анимированных трехмерных графиков с интерактивными кнопки.
Он служит подробным руководством, которое научит вас всему, что вам нужно знать о Pandas и Matplotlib, в том числе о том, как создавать типы графиков, которые не встроены в саму библиотеку.
Книга «Визуализация данных в Python» , книга для начинающих и средних разработчиков Python, проведет вас через простые манипуляции с данными с помощью Pandas, охватит основные библиотеки построения графиков, такие как Matplotlib и Seaborn, и покажет, как использовать преимущества декларативных и экспериментальных библиотек, таких как Altair. В частности, на протяжении 11 глав эта книга охватывает 9 библиотек Python: Pandas, Matplotlib, Seaborn, Bokeh, Altair, Plotly, GGPlot, GeoPandas и VisPy.
Он служит уникальным практическим руководством по визуализации данных в виде множества инструментов, которые вы можете использовать в своей карьере.