Gráficos de Pizza Aninhados com Matplotlib

Beginner

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

Introdução

Gráficos de pizza (pie charts) são ferramentas populares de visualização de dados usadas para representar dados em formato circular. No entanto, há momentos em que você pode querer criar uma versão aninhada do gráfico de pizza, conhecida como gráfico de rosca (donut chart). Este tutorial irá guiá-lo através da criação de gráficos de pizza aninhados usando Matplotlib, uma popular biblioteca de visualização de dados em Python.

Dicas para a VM (VM Tips)

Após a inicialização da VM, clique no canto superior esquerdo para mudar para a aba Notebook e acessar o Jupyter Notebook para praticar.

Às vezes, pode ser necessário aguardar alguns segundos para que o Jupyter Notebook termine de carregar. A validação das operações não pode ser automatizada devido a limitações no Jupyter Notebook.

Se você enfrentar problemas durante o aprendizado, sinta-se à vontade para perguntar ao Labby. Forneça feedback após a sessão, e resolveremos o problema prontamente para você.

Importar as bibliotecas necessárias

Primeiramente, precisamos importar as bibliotecas necessárias. Neste caso, precisamos de Matplotlib e numpy.

import matplotlib.pyplot as plt
import numpy as np

Criar um gráfico de pizza aninhado usando ax.pie

Podemos criar um gráfico de pizza aninhado usando o método ax.pie. Primeiro, geraremos alguns dados falsos, correspondentes a três grupos. No círculo interno, trataremos cada número como pertencente ao seu próprio grupo. No círculo externo, os plotaremos como membros de seus 3 grupos originais.

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

Criar um gráfico de pizza aninhado usando ax.bar

Também podemos criar um gráfico de pizza aninhado usando o método ax.bar em eixos com um sistema de coordenadas polar. Isso pode dar mais flexibilidade no design exato do gráfico.

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

size = 0.3
vals = np.array([[60., 32.], [37., 40.], [29., 10.]])
## Normalize vals to 2 pi
valsnorm = vals/np.sum(vals)*2*np.pi
## Obtain the ordinates of the bar edges
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()

Personalizar o Gráfico de Pizza Aninhado

Podemos personalizar o gráfico de pizza aninhado alterando as cores, adicionando rótulos e ajustando o tamanho.

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])

## Add labels
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'))

## Set the title
ax.set(aspect="equal", title='Nested Pie Chart')

plt.show()

Salvar o Gráfico de Pizza Aninhado

Podemos salvar o gráfico de pizza aninhado como uma imagem nos formatos png, pdf ou svg.

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

Resumo

Neste tutorial, aprendemos como criar gráficos de pizza aninhados em Matplotlib usando dois métodos: ax.pie e ax.bar. Também aprendemos como personalizar o gráfico de pizza aninhado adicionando rótulos, alterando as cores e ajustando o tamanho. Finalmente, vimos como salvar o gráfico de pizza aninhado como uma imagem nos formatos png, pdf ou svg.