Construindo Histogramas com Matplotlib

Beginner

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

Introdução

Neste laboratório, aprenderemos como usar Matplotlib para construir histogramas usando retângulos e PolyCollections. Usaremos numpy para gerar dados aleatórios e, em seguida, usaremos Matplotlib para visualizar os dados como um histograma. Este laboratório assume que você tem uma compreensão básica de Python e Matplotlib.

Dicas da VM

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

Antes de começarmos, precisamos importar as bibliotecas necessárias. Usaremos Matplotlib e numpy neste laboratório. Abra um novo arquivo Python e adicione o seguinte código:

import matplotlib.pyplot as plt
import numpy as np

Definir a semente aleatória e gerar dados

Usaremos numpy para gerar dados aleatórios. Para tornar nossos resultados reproduzíveis, definiremos uma semente aleatória. Adicione o seguinte código ao seu arquivo:

np.random.seed(19680801)
data = np.random.randn(1000)

Gerar os dados do histograma

Agora que temos nossos dados aleatórios, podemos gerar um histograma usando numpy. Usaremos 50 bins para criar nosso histograma. Adicione o seguinte código:

n, bins = np.histogram(data, 50)

Gerar os cantos dos retângulos

Para desenhar nosso histograma usando retângulos, precisamos calcular os cantos de cada retângulo. Adicione o seguinte código:

left = bins[:-1]
right = bins[1:]
bottom = np.zeros(len(left))
top = bottom + n

Gerar o objeto Path e criar um patch a partir dele

Em seguida, geraremos um objeto Path e criaremos um patch a partir dele. Usaremos o objeto Path para desenhar nosso histograma usando retângulos. Adicione o seguinte código:

XY = np.array([[left, left, right, right], [bottom, top, top, bottom]]).T
barpath = path.Path.make_compound_path_from_polys(XY)
patch = patches.PathPatch(barpath)
patch.sticky_edges.y[:] = [0]
axs[0].add_patch(patch)
axs[0].autoscale_view()

Desenhar o histograma usando um PathCollection

Em vez de usar muitas instâncias de Rectangle, podemos usar um método mais rápido para desenhar nosso histograma usando um PathCollection. Criaremos um caminho composto diretamente usando vértices e códigos. Adicione o seguinte código:

nrects = len(left)
nverts = nrects*(1+3+1)
verts = np.zeros((nverts, 2))
codes = np.ones(nverts, int) * path.Path.LINETO
codes[0::5] = path.Path.MOVETO
codes[4::5] = path.Path.CLOSEPOLY
verts[0::5, 0] = left
verts[0::5, 1] = bottom
verts[1::5, 0] = left
verts[1::5, 1] = top
verts[2::5, 0] = right
verts[2::5, 1] = top
verts[3::5, 0] = right
verts[3::5, 1] = bottom

barpath = path.Path(verts, codes)
patch = patches.PathPatch(barpath)
patch.sticky_edges.y[:] = [0]
axs[1].add_patch(patch)
axs[1].autoscale_view()

Exibir o histograma

Finalmente, podemos exibir nosso histograma usando Matplotlib. Adicione o seguinte código ao seu arquivo:

plt.show()

Resumo

Neste laboratório, aprendemos como usar Matplotlib para construir histogramas usando retângulos e PolyCollections. Usamos numpy para gerar dados aleatórios e, em seguida, usamos Matplotlib para visualizar os dados como um histograma. Também aprendemos como desenhar histogramas usando um PathCollection, que é um método mais rápido do que usar muitas instâncias de Rectangle.