Gráficos de Barras com Matplotlib

MatplotlibBeginner
Pratique Agora

Introdução

Gráficos de barras são uma ferramenta fundamental na visualização de dados, usados para comparar valores entre diferentes categorias. Eles representam dados com barras retangulares onde o comprimento da barra é proporcional ao valor que ela representa.

Neste laboratório, você aprenderá a usar a biblioteca Matplotlib em Python para criar gráficos de barras. Você começará preparando os dados, depois criará gráficos de barras verticais e horizontais, personalizará sua aparência com cores e, finalmente, adicionará uma legenda para tornar seu gráfico mais informativo. Toda a plotagem será feita escrevendo scripts Python e salvando os gráficos como arquivos de imagem, que você poderá visualizar diretamente no ambiente LabEx.

Preparar listas de categorias e valores

Nesta etapa, você começará configurando os dados básicos para o nosso gráfico de barras. Um gráfico de barras requer dois componentes principais: uma lista de categorias para o eixo e uma lista correspondente de valores numéricos que determinam o tamanho das barras.

Usaremos um conjunto de dados simples representando os números de vendas mensais. Primeiro, abra o arquivo main.py localizado no diretório ~/project no explorador de arquivos à esquerda.

Agora, adicione o seguinte código Python ao arquivo main.py. Este código importa a biblioteca Matplotlib necessária e define nossos dados.

import matplotlib.pyplot as plt

## Data for the bar chart
categories = ['Jan', 'Feb', 'Mar', 'Apr', 'May']
values = [320, 450, 500, 480, 600]

Vamos analisar este código:

  • import matplotlib.pyplot as plt: Esta linha importa o módulo pyplot da biblioteca matplotlib e lhe dá o alias convencional plt. Usaremos plt para chamar funções de plotagem.
  • categories = ['Jan', 'Feb', 'Mar', 'Apr', 'May']: Esta lista contém os rótulos para o nosso eixo x. Cada string representa uma categoria.
  • values = [320, 450, 500, 480, 600]: Esta lista contém os dados numéricos correspondentes a cada categoria. Por exemplo, as vendas de 'Jan' são 320.

Após adicionar o código, salve o arquivo main.py. Na próxima etapa, usaremos esses dados para criar nosso primeiro gráfico de barras.

Criar gráfico de barras vertical usando plt.bar()

Nesta etapa, você usará os dados que preparou para criar um gráfico de barras verticais. A função principal para isso é plt.bar(). Esta função recebe as categorias para o eixo x e seus valores correspondentes para o eixo y para desenhar as barras.

Adicione as seguintes linhas de código ao final do seu arquivo main.py. Este novo código gerará o gráfico, adicionará rótulos e um título, e o salvará como um arquivo de imagem.

## Create the bar chart
plt.bar(categories, values)

## Add title and labels
plt.title('Monthly Sales Data')
plt.xlabel('Month')
plt.ylabel('Sales ($)')

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

print("Vertical bar chart saved as vertical_bar_chart.png")

Aqui está uma explicação do novo código:

  • plt.bar(categories, values): Esta é a função principal que cria o gráfico de barras. Ela mapeia a lista categories para o eixo x e a lista values para a altura das barras no eixo y.
  • plt.title(), plt.xlabel(), plt.ylabel(): Estas funções adicionam um título ao gráfico e rótulos aos eixos x e y, respectivamente, tornando o gráfico mais fácil de entender.
  • plt.savefig(...): Como estamos em um ambiente sem GUI, não podemos exibir o gráfico diretamente com plt.show(). Em vez disso, plt.savefig() salva o gráfico gerado em um arquivo. Estamos salvando-o como vertical_bar_chart.png no diretório ~/project.

Agora, execute seu script a partir do terminal:

python3 main.py

Você deverá ver a seguinte saída:

Vertical bar chart saved as vertical_bar_chart.png

Um novo arquivo chamado vertical_bar_chart.png aparecerá no seu explorador de arquivos. Dê um duplo clique nele para ver seu primeiro gráfico de barras!

Vertical bar chart

Criar gráfico de barras horizontal usando plt.barh()

Nesta etapa, você aprenderá como criar um gráfico de barras horizontais. Isso é útil quando você tem rótulos de categoria longos que podem se sobrepor em um gráfico vertical. O Matplotlib fornece a função plt.barh() para este propósito, que funciona de forma semelhante a plt.bar(), mas desenha as barras horizontalmente.

Modifique seu arquivo main.py para usar plt.barh() em vez de plt.bar(). Observe que para plt.barh(), os parâmetros são y (categorias) e width (valores). Também precisamos trocar o xlabel e o ylabel.

Substitua a seção de plotagem do seu arquivo main.py pelo seguinte código:

## Create the horizontal bar chart
plt.barh(categories, values)

## Add title and labels
plt.title('Monthly Sales Data')
plt.xlabel('Sales ($)')
plt.ylabel('Month')

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

print("Horizontal bar chart saved as horizontal_bar_chart.png")

O main.py completo agora deve se parecer com isto:

import matplotlib.pyplot as plt

## Data for the bar chart
categories = ['Jan', 'Feb', 'Mar', 'Apr', 'May']
values = [320, 450, 500, 480, 600]

## Create the horizontal bar chart
plt.barh(categories, values)

## Add title and labels
plt.title('Monthly Sales Data')
plt.xlabel('Sales ($)')
plt.ylabel('Month')

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

print("Horizontal bar chart saved as horizontal_bar_chart.png")

Agora, execute o script atualizado a partir do terminal:

python3 main.py

Você verá esta saída:

Horizontal bar chart saved as horizontal_bar_chart.png

Verifique seu diretório de projeto em busca do novo arquivo horizontal_bar_chart.png e abra-o para visualizar seu gráfico de barras horizontal.

Horizontal bar chart

Personalizar cores das barras usando o parâmetro color

Nesta etapa, você aprimorará seu gráfico de barras adicionando cores. O Matplotlib facilita a alteração da cor das barras usando o parâmetro color na função plt.bar() ou plt.barh(). Você pode definir uma única cor para todas as barras ou fornecer uma lista de cores para colorir cada barra individualmente.

Vamos voltar ao gráfico de barras verticais e dar a cada barra uma cor diferente. Modifique seu arquivo main.py para incluir uma lista de cores e passá-la para a função plt.bar().

Seu arquivo main.py deve ser atualizado para ficar assim:

import matplotlib.pyplot as plt

## Data for the bar chart
categories = ['Jan', 'Feb', 'Mar', 'Apr', 'May']
values = [320, 450, 500, 480, 600]
colors = ['skyblue', 'lightgreen', 'salmon', 'gold', 'orchid']

## Create the bar chart with custom colors
plt.bar(categories, values, color=colors)

## Add title and labels
plt.title('Monthly Sales Data')
plt.xlabel('Month')
plt.ylabel('Sales ($)')

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

print("Colored bar chart saved as colored_bar_chart.png")

Neste código:

  • Definimos uma lista colors, onde cada nome de cor corresponde a uma barra no gráfico.
  • Passamos essa lista para o parâmetro color em plt.bar(categories, values, color=colors).
  • Alteramos o nome do arquivo de saída para colored_bar_chart.png para evitar sobrescrever nosso trabalho anterior.

Execute o script a partir do terminal:

python3 main.py

A saída será:

Colored bar chart saved as colored_bar_chart.png

Abra o arquivo recém-criado colored_bar_chart.png para ver seu gráfico de barras colorido.

Colored bar chart

Adicionar legenda usando plt.legend()

Nesta etapa final, você aprenderá como adicionar uma legenda ao seu gráfico. Uma legenda é crucial para explicar o que diferentes elementos em um gráfico representam, especialmente quando você está plotando vários conjuntos de dados.

Para adicionar uma legenda, você primeiro precisa especificar um label (rótulo) para os dados do seu gráfico. Em seguida, você chama a função plt.legend() para exibir a legenda no gráfico.

Vamos modificar o script main.py para incluir um rótulo para nossos dados de vendas e, em seguida, renderizar a legenda.

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

import matplotlib.pyplot as plt

## Data for the bar chart
categories = ['Jan', 'Feb', 'Mar', 'Apr', 'May']
values = [320, 450, 500, 480, 600]

## Create the bar chart with a label
plt.bar(categories, values, color='skyblue', label='This Year Sales')

## Add title and labels
plt.title('Monthly Sales Data')
plt.xlabel('Month')
plt.ylabel('Sales ($)')

## Add the legend
plt.legend()

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

print("Bar chart with legend saved as bar_chart_with_legend.png")

Aqui estão as alterações:

  • Em plt.bar(), adicionamos o parâmetro label='This Year Sales'. Isso atribui um nome ao nosso conjunto de dados.
  • Adicionamos a chamada plt.legend(). Esta função encontra todos os elementos rotulados no gráfico e cria uma caixa de legenda.
  • Estamos usando uma única cor 'skyblue' por simplicidade e salvando o gráfico final como bar_chart_with_legend.png.

Execute o script mais uma vez:

python3 main.py

Você verá a mensagem de confirmação final:

Bar chart with legend saved as bar_chart_with_legend.png

Agora, abra bar_chart_with_legend.png no explorador de arquivos. Você verá seu gráfico de barras completo com uma legenda, que identifica corretamente as barras como "This Year Sales".

Bar chart with legend

Resumo

Parabéns por completar este laboratório! Você aprendeu com sucesso os fundamentos de criação e personalização de gráficos de barras com Matplotlib.

Neste laboratório, você aprendeu a:

  • Preparar dados (categorias e valores) para plotagem.
  • Criar um gráfico de barras verticais usando plt.bar().
  • Criar um gráfico de barras horizontais usando plt.barh().
  • Personalizar a aparência das barras usando o parâmetro color.
  • Adicionar uma legenda descritiva ao seu gráfico usando o parâmetro label e a função plt.legend().

Essas habilidades são essenciais para qualquer tarefa de análise ou visualização de dados. Agora você pode criar gráficos de barras claros e eficazes para comparar dados categóricos. Sinta-se à vontade para experimentar ainda mais com outros recursos do Matplotlib para criar gráficos ainda mais sofisticados.