Gráficos de Pizza com Matplotlib

MatplotlibBeginner
Pratique Agora

Introdução

Neste laboratório, você aprenderá a criar e personalizar gráficos de pizza usando Matplotlib, uma das bibliotecas de visualização de dados mais populares em Python. Um gráfico de pizza é um gráfico estatístico circular, dividido em fatias para ilustrar a proporção numérica.

Você começará preparando os dados, plotará um gráfico de pizza básico e adicionará progressivamente recursos como um efeito de "explode", rótulos de porcentagem e uma sombra para tornar o gráfico mais informativo e visualmente atraente.

Todas as operações serão realizadas dentro do LabEx WebIDE. Você escreverá código Python em um arquivo e o executará para gerar imagens de gráficos. Como a exibição gráfica não está disponível neste ambiente, você usará plt.savefig() para salvar seus gráficos como arquivos de imagem e, em seguida, visualizá-los diretamente no IDE.

Preparar listas de rótulos e tamanhos

Nesta etapa, você preparará os dados necessários para plotar um gráfico de pizza. Um gráfico de pizza precisa de dois conjuntos principais de dados: os rótulos para cada fatia e o tamanho ou valor correspondente de cada fatia.

Primeiro, vamos criar um script Python. No explorador de arquivos do WebIDE, à esquerda, você verá um arquivo chamado main.py dentro do diretório project. Dê um duplo clique nele para abri-lo no editor.

Agora, adicione o seguinte código ao main.py. Este código define duas listas Python: labels para as categorias e sizes para suas respectivas proporções.

## Data for the pie chart
labels = ['Frogs', 'Hogs', 'Dogs', 'Logs']
sizes = [15, 30, 45, 10]
  • labels: Uma lista de strings que será usada para rotular cada fatia do gráfico de pizza.
  • sizes: Uma lista de números que representa o valor ou a proporção de cada fatia. A soma desses valores representará o todo do gráfico.

Após adicionar o código, seu arquivo main.py deverá ficar assim. Este script ainda não produz nenhuma saída, mas configura os dados necessários para as próximas etapas.

Plotar gráfico de pizza usando plt.pie(sizes, labels=labels)

Nesta etapa, você usará os dados da etapa anterior para plotar um gráfico de pizza básico. Utilizaremos a função plt.pie() da biblioteca Matplotlib.

Primeiro, você precisa importar o módulo matplotlib.pyplot, que é convencionalmente importado com o alias plt. Em seguida, você pode chamar a função plt.pie(), passando suas listas sizes e labels como argumentos.

Como não podemos exibir uma janela de GUI neste ambiente, salvaremos o gráfico em um arquivo de imagem usando plt.savefig().

Atualize seu arquivo main.py com o seguinte código:

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

Agora, vamos executar o script. Abra um terminal no WebIDE (você pode usar o ícone + no painel do terminal ou o menu Terminal > New Terminal) e execute o seguinte comando:

python3 main.py

Você deverá ver a seguinte saída no terminal:

Pie chart saved to pie_chart.png

Um novo arquivo chamado pie_chart.png aparecerá no seu diretório project. Dê um duplo clique em pie_chart.png no explorador de arquivos para abri-lo e visualizar seu primeiro gráfico de pizza.

Pie chart

Adicionar efeito explode usando o parâmetro explode

Nesta etapa, você aprenderá como enfatizar uma fatia particular do gráfico de pizza, "explodindo-a". Isso significa afastá-la ligeiramente do centro do gráfico. Isso é alcançado usando o parâmetro explode na função pie().

O parâmetro explode recebe uma tupla ou lista com o mesmo comprimento dos seus dados sizes. Cada valor na tupla especifica a fração do raio com a qual cada fatia será deslocada. Um valor de 0 significa que a fatia permanece no lugar, enquanto um valor não zero como 0.1 a afastará.

Vamos modificar o main.py para explodir a fatia 'Hogs'. Também salvaremos a saída em um novo arquivo, pie_chart_explode.png, para compará-lo com o anterior.

Atualize seu arquivo main.py com o seguinte código:

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

Agora, execute o script atualizado a partir do terminal:

python3 main.py

Você verá esta saída:

Pie chart with explode effect saved to pie_chart_explode.png

Um novo arquivo pie_chart_explode.png está agora no seu diretório de projeto. Abra-o para ver a fatia 'Hogs' ligeiramente separada do restante do gráfico.

Pie chart with explode effect

Exibir porcentagens usando autopct='%1.1f%%'

Nesta etapa, você adicionará rótulos de porcentagem a cada fatia para tornar o gráfico mais informativo. Isso pode ser feito usando o parâmetro autopct.

O parâmetro autopct aceita uma string de formato que determina como o valor percentual de cada fatia é exibido. Por exemplo, '%1.1f%%' formatará o número como um número de ponto flutuante com uma casa decimal, seguido por um sinal de porcentagem. O %% no final é necessário para exibir um símbolo literal de %.

Vamos atualizar o main.py para incluir porcentagens. Salvaremos o resultado em 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")

Execute o script novamente a partir do seu terminal:

python3 main.py

A saída será:

Pie chart with percentages saved to pie_chart_percent.png

Agora, abra pie_chart_percent.png no explorador de arquivos. Você verá que cada fatia agora exibe seu valor percentual.

Pie chart with percentages

Definir sombra usando shadow=True

Nesta etapa final, você adicionará uma sombra ao gráfico de pizza para dar um leve visual 3D. Isso é feito facilmente definindo o parâmetro shadow como True.

Vamos combinar todos os recursos que aprendemos: explode, autopct e shadow. Salvaremos o gráfico final como pie_chart_final.png.

Atualize seu arquivo main.py com o código completo:

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

Nesta versão final, também adicionamos startangle=90 para rotacionar o ponto de partida do gráfico de pizza em 90 graus no sentido anti-horário, e ax.axis('equal') para garantir que o gráfico de pizza seja desenhado como um círculo perfeito.

Execute o script uma última vez:

python3 main.py

A saída será:

Final pie chart saved to pie_chart_final.png

Abra pie_chart_final.png para ver seu gráfico de pizza completo e com todos os recursos, com uma fatia explodida, rótulos de porcentagem e uma sombra.

Final pie chart

Resumo

Parabéns por completar o laboratório! Você aprendeu com sucesso como criar e personalizar gráficos de pizza usando Matplotlib em Python.

Neste laboratório, você aprendeu a:

  • Preparar dados (rótulos e tamanhos) para um gráfico de pizza.
  • Plotar um gráfico de pizza básico usando plt.pie().
  • Salvar um gráfico Matplotlib em um arquivo de imagem usando plt.savefig().
  • Enfatizar uma fatia usando o parâmetro explode.
  • Exibir valores percentuais nas fatias usando o parâmetro autopct.
  • Adicionar um efeito visual 3D com o parâmetro shadow=True.

Agora você está equipado com as habilidades fundamentais para criar gráficos de pizza informativos e visualmente atraentes para seus projetos de visualização de dados.