Круговая диаграмма Matplotlib - Учебное пособие и примеры

Введение В Python существует множество библиотек визуализации данных, но Matplotlib - самая популярная из них. Популярность Matplotlib объясняется его надежностью и полезностью - он может создавать как простые, так и сложные графики с небольшим количеством кода. Вы также можете настроить графики различными способами. В этом уроке мы расскажем, как построить круговую диаграмму в Matplotlib. > Круговые диаграммы представляют данные с разбивкой по категориям / ярлыкам. Это интуитивно понятный и простой способ визуализировать

Вступление

В 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() 

Это генерирует довольно простую, но понятную круговую диаграмму, в которой каждое значение назначается пропорционально большому сегменту круговой диаграммы:

простая круговая диаграммаmatplotlib{.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() 

Теперь круговая диаграмма будет содержать некоторые дополнительные данные, которые позволят нам немного легче ее интерпретировать:

круговая диаграмма с меткамиmatplotlib{.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 .

Выполнение этого кода приводит к:

изменение цвета круговой диаграммыmatplotlib{.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 десятичных знаков (только целые числа) и добавили % в конце. Если бы мы опускали окружающие %..% , строки форматировались бы не как проценты, а как буквальные значения.

Выполнение этого кода приводит к:

добавление процентных меток в круговую диаграмму вmatplotlib{.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 и аналогичные значения. Вы можете взорвать столько из них, сколько захотите, с разными значениями, чтобы выделить разные категории.

Выполнение этого кода приводит к:

выделение секторов круговой диаграммы с помощью разнесения вmatplotlib{.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() 

Это приводит к:

добавление тени к круговой диаграмме вmatplotlib{.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 градусов, эффективно переворачивая ее на другую сторону:

вращающиеся круговые диаграммы вmatplotlib{.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.

Он служит уникальным практическим руководством по визуализации данных в виде множества инструментов, которые вы можете использовать в своей карьере.

comments powered by Disqus