Criando gráficos com matplot - Buteco Open Source
07/10/2015 Marcos Paulo de Souza 2 min de leitura
Criado por John Hunter (1968-2012) , matplot é usada para criação de plots, histogramas, espectrogramas, gráficos (charts) simples e 3D e etc. Para ter uma ideia da diversidade dessa ferramenta, você pode visitar a galeria de exemplos.
Neste artigo, vou fazer uma demonstração bem simples, onde apresentarei como criar um gráfico de barras (barchart) em python. Para isso, você deve fazer a instalação de algumas bibliotecas. No meu caso, estou usando um Debian-like, então substitua o gerenciador de pacotes de acordo com sua distro.
apt-get install python-matplotlib python-numpy python-scipy python-matplotlib
Estando agora com as bibliotecas necessárias instaladas, podemos dar partida ao nosso código de exemplo:
Agora vamos a explicação. Primeiramente devemos fazer o import do numpy e matplot.
Depois disso, devemos declarar algumas variáveis que utilizaremos durante o script.
data = ((30, 40, 80), ('r', 'g', '#00FF33'), (2013, 2014, 2015))
xPositions = np.arange(len(data[0]))
barWidth = 0.50  # Largura da barra
O data é uma matriz que contém os dados para nosso gráfico de barras, veja significado de cada posição: data[0] – valores usados para definir a altura de cada barra; data[1] – será usado para as cores das barras. Observe a variação de formatos de cores declaradas. data[2] – para os nomeadores de referência para as barras (labels) e legenda.
Agora, devemos criar os objetos necessários para manipulação do gráfico e também de nossos Axes:
_ax = plt.axes()  # Cria axes
# bar(left, height, width=0.8, bottom=None, hold=None, **kwargs)
_chartBars = plt.bar(xPositions, data[0], barWidth, color=data[1],
yerr=5, align='center')  # Gera barras
Para melhorarmos os aspecto visual, podemos colocar os valores de cada barra, acima delas, fazendo da seguinte forma:
for bars in _chartBars:
_ax.text(bars.get_x() + (bars.get_width() / 2.0), bars.get_height() + 5, bars.get_height(), ha='center')  # Label acima das barras
# bars.get_x() + (bars.get_width() / 2.0) = alinha label ao centro horizontal(x) de cada barra
# bars.get_height() + 5 = posição Y da barra + um espaçador de 5
Com o código abaixo pode-se adicionar também informações de ano referente ao valor, abaixo das barras:
_ax.set_xticks(xPositions)
_ax.set_xticklabels(data[2])
O código abaixo adiciona labels nos eixos x e y e também uma grid como brackground, para facilitar a "divisão visual" dos itens:
Por fim, para termos um barchart com qualidade intuitiva bacana, adcione um legend e então teremos um gráfico bem autoexplicativo:
plt.legend(_chartBars, data[2])
No final de tudo, somente renderizamos o gráfico:
Segue abaixo uma imagem do gráfico gerado script mostrado acima: Enviado por Willian Briotto. Revisado pela equipe do Buteco Open Source