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.