Visualizando Dados com Matplotlib: Construindo gráficos de barras usando o bar_label

Colocando rótulos em barras agrupadas e empilhadas

Nesse artigo vamos mostrar dois exemplos de gráficos com barras e a utilização da função bar_label, facilitando a configuração das etiquetas/rótulos nas barras.

Em primeiro lugar, devemos verificar qual a versão do matplotlib está instalada em nosso computador. Para isso você pode usar o comando “pip show” e em seguida o nome da biblioteca em questão:

Matplotlib desatualizado

Como vamos utilizar um recurso disponível somente nas versões mais recentes do matplotlib, teremos que utilizar o comando abaixo para forçar uma atualização específica para a versão 3.5.2:

Atualizando matplotlib para versão 3.5.2

Caso você não atualize para a versão correta, deve experimentar um erro do tipo AttributeError: ‘AxesSubplot’ object has no attribute ‘bar_label’;

Gráfico de Barra Agrupado

Para o gráfico de barras agrupado utilizaremos os dados abaixo.
São 5 grupos com notas divididas entre os homens e mulheres:

Definimos também os valores para o eixo x e a largura das barras. Fique atento que a variável x será um array([0, 1, 2, 3, 4]), ou seja, o espaçamento entre cada barra será de no máximo 1 unidade, por esse motivo a largura de cada barra não pode ser muito grande.

A função plt.subplots() retornará um container para a variável ax, utilizaremos esse container para definir as barras respeitando a seguinte regra:

Axes.bar(x, height, width=0.8, bottom=None, *, align=’center’, data=None, **kwargs)

Dessa forma, para que as barras dos homens fique posicionada antes da barra das mulheres, precisamos utilizar x -largura/2 e x + largura/2 em cada uma das definições de barras. Caso isso não seja feito, as barras ficarão sobrepostas, pois estarão centralizadas na mesma posição.

Os demais atributos são mais fáceis de entender.

O resultado do código é a imagem abaixo:

Ainda precisamos adicionar as etiquetas de valor para cada barra:

Simples não é?

Gráfico de Barras Empilhadas

Para as barras empilhadas vamos utilizar tuplas para os dados e também o desvio padrão dos scores de cada atributo.

A diferença básica para as barras empilhadas é a necessidade de especificar qual barra ficará na parte inferior. Nesse exemplo especificamos o bottom=homens, caso isso não fosse configurado, as barras ficariam sobrepostas pois estariam começando no mesmo índice ind, lembre-se que para as barras agrupadas fizemos um ajuste para evitar isso.

Temos o gráfico de barras empilhadas, com as pontuações dos homens abaixo e os respectivos rótulos centralizados nas barras.

Ficou pendente incluirmos os dados do desvio padrão. Para isso basta passarmos os valores para o atributo yerr utilizado para especificar os erros no gráfico de barras.

Novo gráfico com a indicação de erro para cada barra, de homens e de mulheres.

A função de apoio bar_label permite a configuração rápida dos rótulos para as barras, necessitando apenas a indicação do container com as configurações das barras, algo que já era necessário de ser especificado em qualquer gráfico de barras.


Gostou? Gosta de visualização de dados e da biblioteca Matplotlib?


Notebook do Colab disponível aqui.

Para mais conteúdo siga @aprendadatascience.