Круговые диаграммы Matplotlib

MatplotlibBeginner
Практиковаться сейчас

Введение

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

Вы начнете с подготовки данных, затем построите базовую круговую диаграмму и постепенно добавите такие функции, как эффект "explode" (выделение сектора), процентные метки и тень, чтобы сделать диаграмму более информативной и визуально привлекательной.

Все операции будут выполняться в LabEx WebIDE. Вы будете писать код на Python в файле и выполнять его для генерации изображений диаграмм. Поскольку графический интерфейс в этой среде недоступен, вы будете использовать plt.savefig() для сохранения ваших диаграмм в виде файлов изображений, а затем просматривать их непосредственно в IDE.

Подготовка списков меток и размеров

На этом этапе вы подготовите данные, необходимые для построения круговой диаграммы. Круговая диаграмма требует двух основных наборов данных: меток для каждого сектора и соответствующего размера или значения каждого сектора.

Сначала создадим скрипт Python. В файловом проводнике WebIDE слева вы увидите файл с именем main.py в каталоге project. Дважды щелкните по нему, чтобы открыть его в редакторе.

Теперь добавьте следующий код в main.py. Этот код определяет два списка Python: labels для категорий и sizes для их соответствующих пропорций.

## Data for the pie chart
labels = ['Frogs', 'Hogs', 'Dogs', 'Logs']
sizes = [15, 30, 45, 10]
  • labels: Список строк, которые будут использоваться для маркировки каждого сектора круговой диаграммы.
  • sizes: Список чисел, представляющих значение или пропорцию каждого сектора. Сумма этих значений будет представлять собой весь круг.

После добавления кода ваш файл main.py должен выглядеть следующим образом. Этот скрипт пока не производит никакого вывода, но он подготавливает необходимые данные для следующих шагов.

Построение круговой диаграммы с помощью plt.pie(sizes, labels=labels)

На этом этапе вы используете данные из предыдущего шага для построения базовой круговой диаграммы. Мы будем использовать функцию plt.pie() из библиотеки Matplotlib.

Сначала вам нужно импортировать модуль matplotlib.pyplot, который по традиции импортируется с псевдонимом plt. Затем вы можете вызвать функцию plt.pie(), передав ей ваши списки sizes и labels в качестве аргументов.

Поскольку в этой среде мы не можем отобразить окно графического интерфейса, мы сохраним диаграмму в файл изображения с помощью plt.savefig().

Обновите ваш файл main.py следующим кодом:

import matplotlib.pyplot as plt

## Data for the pie chart
labels = ['Frogs', 'Hogs', 'Dogs', 'Logs']
sizes = [15, 30, 45, 10]

## Create a figure and a set of subplots
fig, ax = plt.subplots()

## Plot the pie chart
ax.pie(sizes, labels=labels)

## Save the figure to a file
plt.savefig('/home/labex/project/pie_chart.png')

print("Pie chart saved to pie_chart.png")

Теперь давайте запустим скрипт. Откройте терминал в WebIDE (вы можете использовать значок + на панели терминала или меню Terminal > New Terminal) и выполните следующую команду:

python3 main.py

В терминале вы должны увидеть следующий вывод:

Pie chart saved to pie_chart.png

В вашем каталоге project появится новый файл с именем pie_chart.png. Дважды щелкните по pie_chart.png в файловом проводнике, чтобы открыть его и просмотреть вашу первую круговую диаграмму.

Pie chart

Добавление эффекта взрыва с помощью параметра explode

На этом шаге вы узнаете, как выделить определенный сектор круговой диаграммы, "взорвав" его. Это означает немного сместить его от центра круга. Это достигается с помощью параметра explode в функции pie().

Параметр explode принимает кортеж или список той же длины, что и ваши данные sizes. Каждое значение в кортеже указывает долю радиуса, на которую смещается каждый сектор. Значение 0 означает, что сектор остается на месте, а ненулевое значение, например 0.1, сместит его наружу.

Давайте изменим main.py, чтобы "взорвать" сектор 'Hogs'. Мы также сохраним результат в новый файл, pie_chart_explode.png, чтобы сравнить его с предыдущим.

Обновите ваш файл main.py следующим кодом:

import matplotlib.pyplot as plt

## Data for the pie chart
labels = ['Frogs', 'Hogs', 'Dogs', 'Logs']
sizes = [15, 30, 45, 10]
explode = (0, 0.1, 0, 0)  ## only "explode" the 2nd slice (i.e. 'Hogs')

## Create a figure and a set of subplots
fig, ax = plt.subplots()

## Plot the pie chart with explode effect
ax.pie(sizes, explode=explode, labels=labels)

## Save the figure to a file
plt.savefig('/home/labex/project/pie_chart_explode.png')

print("Pie chart with explode effect saved to pie_chart_explode.png")

Теперь запустите обновленный скрипт из терминала:

python3 main.py

Вы увидите следующий вывод:

Pie chart with explode effect saved to pie_chart_explode.png

Новый файл pie_chart_explode.png теперь находится в вашем каталоге проекта. Откройте его, чтобы увидеть, что сектор 'Hogs' немного отделен от остальной части круга.

Pie chart with explode effect

Отображение процентов с помощью autopct='%1.1f%%'

На этом шаге вы добавите метки с процентами к каждому сектору, чтобы сделать диаграмму более информативной. Это можно сделать с помощью параметра autopct.

Параметр autopct принимает строку формата, которая определяет, как отображается процентное значение для каждого сектора. Например, '%1.1f%%' отформатирует число как число с плавающей запятой с одним десятичным знаком, за которым следует знак процента. %% в конце необходим для отображения символа %.

Давайте обновим main.py, чтобы включить проценты. Мы сохраним результат в файл pie_chart_percent.png.

import matplotlib.pyplot as plt

## Data for the pie chart
labels = ['Frogs', 'Hogs', 'Dogs', 'Logs']
sizes = [15, 30, 45, 10]
explode = (0, 0.1, 0, 0)  ## only "explode" the 2nd slice (i.e. 'Hogs')

## Create a figure and a set of subplots
fig, ax = plt.subplots()

## Plot the pie chart with explode and percentage
ax.pie(sizes, explode=explode, labels=labels, autopct='%1.1f%%')

## Save the figure to a file
plt.savefig('/home/labex/project/pie_chart_percent.png')

print("Pie chart with percentages saved to pie_chart_percent.png")

Снова запустите скрипт из терминала:

python3 main.py

Вывод будет следующим:

Pie chart with percentages saved to pie_chart_percent.png

Теперь откройте файл pie_chart_percent.png из файлового проводника. Вы увидите, что на каждом секторе теперь отображается его процентное значение.

Pie chart with percentages

Установка тени с помощью shadow=True

На этом заключительном шаге вы добавите тень к круговой диаграмме, чтобы придать ей немного 3D-эффект. Это легко сделать, установив параметр shadow в True.

Объединим все изученные нами функции: explode, autopct и shadow. Финальную диаграмму мы сохраним как pie_chart_final.png.

Обновите ваш файл main.py полным кодом:

import matplotlib.pyplot as plt

## Data for the pie chart
labels = ['Frogs', 'Hogs', 'Dogs', 'Logs']
sizes = [15, 30, 45, 10]
explode = (0, 0.1, 0, 0)  ## only "explode" the 2nd slice (i.e. 'Hogs')

## Create a figure and a set of subplots
fig, ax = plt.subplots()

## Plot the final pie chart with all features
ax.pie(sizes, explode=explode, labels=labels, autopct='%1.1f%%',
        shadow=True, startangle=90)

## Equal aspect ratio ensures that pie is drawn as a circle.
ax.axis('equal')

## Save the figure to a file
plt.savefig('/home/labex/project/pie_chart_final.png')

print("Final pie chart saved to pie_chart_final.png")

В этой финальной версии мы также добавили startangle=90 для поворота начальной точки круговой диаграммы на 90 градусов против часовой стрелки, и ax.axis('equal') для обеспечения того, чтобы круговая диаграмма была нарисована как идеальный круг.

Выполните скрипт в последний раз:

python3 main.py

Вывод будет следующим:

Final pie chart saved to pie_chart_final.png

Откройте файл pie_chart_final.png, чтобы увидеть вашу завершенную, полнофункциональную круговую диаграмму с "взорванным" сектором, метками процентов и тенью.

Final pie chart

Резюме

Поздравляем с завершением лабораторной работы! Вы успешно научились создавать и настраивать круговые диаграммы с помощью Matplotlib в Python.

В этой лабораторной работе вы научились:

  • Подготавливать данные (метки и размеры) для круговой диаграммы.
  • Строить базовую круговую диаграмму с помощью plt.pie().
  • Сохранять график Matplotlib в файл изображения с помощью plt.savefig().
  • Выделять сектор с помощью параметра explode.
  • Отображать процентные значения на секторах с помощью параметра autopct.
  • Добавлять визуальный 3D-эффект с помощью параметра shadow=True.

Теперь вы обладаете базовыми навыками для создания информативных и визуально привлекательных круговых диаграмм для ваших проектов визуализации данных.