Gráficos básicos com a biblioteca Matplotlib em Python
Gráficos básicos com a biblioteca matplotlib em Python
O Matplotlib é uma biblioteca Python usada para criar visualizações estáticas, animadas e interativas em Python. É uma ferramenta poderosa para visualização de dados e é amplamente utilizada em pesquisa científica, análise de dados e aprendizado de máquina. Vejamos como podemos criar alguns tipos de gráficos simples com o Matplotlib:
Instalação do Matplotlib
A biblioteca Matplotlib está incluída em muitas distribuições do Python, como Anaconda ou Miniconda, mas se você não o tiver instalado, poderá instalá-lo usando um gerenciador de pacotes como o pip ou o conda. Para instalar com pip, abra um terminal ou prompt de comando e digite:
pip install matplotlib
Isso instalará a versão mais recente do Matplotlib.
Importar o Matplotlib
Para usar Matplotlib em seu script Python, você precisa importar a biblioteca. Para importar o Matplotlib:
import matplotlib.pyplot as plt
Importamos a biblioteca com um alias plt por conveniência, pois é o módulo mais usado na biblioteca.
Pyplot
O pyplot é um submódulo do Matplotlib que fornece uma interface conveniente para criar e personalizar gráficos. Trata-se de uma coleção de funções que simplificam o processo de criação e modificação de gráficos, sem ter que se preocupar com os detalhes subjacentes da biblioteca Matplotlib.
Ao importar matplotlib.pyplot, importamos esta coleção de funções, que inclui as funções:
- plot(): Cria um gráfico de linha ou gráfico de dispersão.
- hist(): Cria um histograma.
- scatter(): Cria um gráfico de dispersão.
- bar(): Cria um gráfico de barras.
- pie(): Cria um gráfico de pizza.
- xlabel(): define o rótulo para o eixo x.
- ylabel(): define o rótulo para o eixo y.
- title(): Define o título do gráfico.
- legend(): Adiciona uma legenda ao gráfico.
- xlim(): Define os limites para o eixo x.
- ylim(): Define os limites para o eixo y.
e muitas outras.
O módulo pyplot fornece muitas outras funções para personalizar gráficos, como definir a cor, estilo de linha, marcador e tamanho de linhas e pontos, controlar os limites do eixo e adicionar anotações de texto. Ao importar matplotlib.pyplot como plt, podemos usar essas funções para criar e personalizar gráficos de maneira fácil e eficiente no código Python.
Plotagem básica com Matplotlib
O Matplotlib pode ser usado para criar muitos tipos de gráficos, incluindo gráficos de linhas, gráficos de dispersão, gráficos de barras e histogramas. Vejamos como criar um gráfico de linha simples:
import matplotlib.pyplot as plt # Data x = [1, 2, 3, 4] y = [1, 4, 9, 16] # Criar uma figura e um eixo fig, ax = plt.subplots() # Plotar os dados ax.plot(x, y) # Mostrar o gráfico plt.show()
Resultado:
Neste exemplo, primeiro definimos os dados como duas listas x e y. Em seguida, criamos uma figura e um eixo usando a função plt.subplots(). Por fim, plotamos os dados usando a função ax.plot() e exibimos o gráfico usando a função plt.show().
Personalização de plotagens
A biblioteca Matplotlib permite que você personalize seus gráficos de várias maneiras, como alterar a cor, o estilo e os rótulos do gráfico. Vejamos como personalizar o gráfico anterior:
import matplotlib.pyplot as plt # Dados x = [1, 2, 3, 4] y = [1, 4, 9, 16] # Criar uma figura e um eixo fig, ax = plt.subplots() # Plotar os dados com as personalizações ax.plot(x, y, color='red', linestyle='--', marker='o', label='dados') # Adicionar rótulos e título ax.set_xlabel('Rótulo X') ax.set_ylabel('Rótulo Y') ax.set_title('Título') # Incluir uma legenda ax.legend() # Mostrar o gráfico plt.show()
Resultado
Neste exemplo, adicionamos personalizações ao gráfico especificando a cor, o estilo de linha e o marcador do gráfico usando os parâmetros de cor, estilo de linha e marcador. Também adicionamos um rótulo ao gráfico usando o parâmetro rótulo, que posteriormente incluímos na legenda usando a função ax.legend(). Por fim adicionamos rótulos de eixo e um título ao gráfico usando as funções ax.set_xlabel(), ax.set_ylabel() e ax.set_title(), respectivamente.
Gráfico de Barras com matplotlib
import matplotlib.pyplot as plt # Dados em uma lista rótulos = ['Maçãs', 'Laranjas', 'Bananas', 'Uvas', 'Figos'] valores = [5, 3, 6, 4, 7] # Criar uma figura e eixos fig, ax = plt.subplots() # Criar o gráfico de barras ax.bar(rótulos, valores) # Inserir rótulos de dados e título do gráfico ax.set_xlabel('Fruta') ax.set_ylabel('Quantidade') ax.set_title('Quantidades de Frutas') # Exibir o gráfico plt.show()
Resultado
Neste exemplo, primeiro definimos os dados como duas listas: rótulos e valores. Em seguida, criamos uma figura e um eixo usando a função plt.subplots() e criamos um gráfico de barras usando a função ax.bar().
Em seguida, adicionamos rótulos de eixo e um título ao gráfico usando as funções ax.set_xlabel(), ax.set_ylabel() e ax.set_title(), respectivamente. Por fim, exibimos o gráfico usando a função plt.show().
Isso criará um gráfico de barras simples com cinco barras, denominadas ‘Maçãs’, ‘Laranjas’, ‘Bananas’, ‘Uvas’ e ‘Figos’, com alturas proporcionais aos valores correspondentes na lista de valores. Para criar um gráfico de barras horizontais basta alterar a função ax.bar() para ax.barh(), mantendo os mesmos parâmetros e configurações.
Você pode personalizar ainda mais o gráfico ajustando a cor, a largura e outras propriedades das barras, bem como adicionando outros elementos do gráfico, como uma legenda ou anotações.
Scatterplot (Gráfico de Dispersão) com matplotlib
import matplotlib.pyplot as plt import numpy as np # Gerar um conjunto de dados aleatórios np.random.seed(123) x = np.random.normal(0, 1, 50) y = np.random.normal(0, 1, 50) # Criar figura e eixo fig, ax = plt.subplots() # Criar o gráfico de dispersão ax.scatter(x, y) # Inserir rótulos de dados e título ax.set_xlabel('X') ax.set_ylabel('Y') ax.set_title('Scatterplot') # Exibir o gráfico plt.show()
Resultado
Neste exemplo, primeiro geramos dados aleatórios usando a função random.normal() do módulo NumPy, com média 0 e desvio padrão 1, para x e y. Em seguida, criamos uma figura e um eixo usando a função plt.subplots() e criamos um gráfico de dispersão usando a função ax.scatter().
Em seguida, adicionamos rótulos de eixo e um título ao gráfico usando as funções ax.set_xlabel(), ax.set_ylabel() e ax.set_title(), respectivamente. Por fim, exibimos o gráfico usando a função plt.show().
Isso criará um gráfico de dispersão com 50 pontos, onde as coordenadas x e y de cada ponto são geradas aleatoriamente a partir de uma distribuição normal. Você pode personalizar ainda mais o gráfico ajustando o tamanho, a cor e outras propriedades dos pontos, bem como adicionando outros elementos do gráfico, como uma linha de tendência ou anotações.
Gráfico de pizza
import matplotlib.pyplot as plt # Dados rotulos = ['Maçãs', 'Laranjas', 'Bananas', 'Uvas', 'Figos'] tamanhos = [25, 30, 20, 25, 27] cores = ['red', 'orange', 'yellow', 'blue', 'purple'] # Criar figura e eixos fig, ax = plt.subplots() # Criar um gráfico de pizza ax.pie(tamanhos, labels=rotulos, colors=cores, autopct='%1.1f%%') # Adicionar título ax.set_title('Distribuição das Frutas') # Mostrar o gráfico plotado plt.show()
Resultado
Neste exemplo, definimos os dados como três listas: rótulos, tamanhos e cores. labels contém os rótulos de cada fatia do gráfico de pizza, os tamanhos contêm os tamanhos correspondentes de cada fatia e as cores contêm as cores de cada fatia.
Em seguida, criamos uma figura e um eixo usando a função plt.subplots() e criamos um gráfico de pizza usando a função ax.pie(). Passamos tamanhos, rótulos e cores como argumentos para ax.pie() e usamos o argumento autopct para especificar o formato dos rótulos de cunha (neste caso, para exibi-los como porcentagens com uma casa decimal).
Em seguida, adicionamos um título ao gráfico usando a função ax.set_title() e exibimos o gráfico usando a função plt.show().
Isso irá criar um gráfico de pizza com cinco fatias denominadas ‘Maçãs’, ‘Laranjas’, ‘Bananas’, ‘Uvas’ e ‘Figos’, com tamanhos proporcionais aos valores correspondentes na lista de tamanhos. Você pode personalizar ainda mais a plotagem ajustando a cor, a largura e outras propriedades das fatias, bem como adicionando outros elementos de plotagem, como uma legenda ou anotações.
A lista completa com os nomes das cores que podem ser utilizadas em gráficos com a biblioteca matplotlib pode ser obtida aqui: List of named colors.
Exercício
Vamos criar um gráfico com matplotlib que mostre três linhas de dados, representando a evolução dos preços de três ações: Companhia Vale, Unipar Carbocloro e Banco do Brasil (códigos VALE5, UNIP6 e BBAS3) em um período de 12 dias.
Os preços serão fornecidos por meio de listas de valores.
import matplotlib.pyplot as plt # Dados (cotações diárias das ações) dias = list(range(1, 13)) vale5 = [82.2, 79.2, 84.0, 86.4, 84.8, 87.2, 88.8, 92.0, 89.6, 92.8, 95.2, 93.6] unip6 = [75.0, 73.2, 75.6, 77.4, 78.2, 76.8, 78.0, 81.0, 82.2, 83.6, 83.4, 82.2] bbas3 = [28.3, 27.9, 28.5, 29.2, 29.0, 29.4, 29.7, 30.1, 29.8, 30.2, 30.5, 30.3] # Criar figura e eixos fig, ax = plt.subplots() # Plotar os dados ax.plot(dias, vale5, label='VALE5') ax.plot(dias, unip6, label='UNIP6') ax.plot(dias, bbas3, label='BBAS3') # Mostrar os rótulos dos eixos e a legenda do gráfico ax.set_xlabel('Dia') ax.set_ylabel('Preço (R$)') ax.legend() # Exibir o gráfico pronto plt.show()
Resultado
Neste exemplo, primeiro definimos os dados para as três ações como listas de preços em um período de 12 dias. Em seguida, criamos uma figura e um eixo usando plt.subplots() e plotamos cada uma das três linhas usando ax.plot(). Também definimos os rótulos e a legenda do eixo usando ax.set_xlabel(), ax.set_ylabel() e ax.legend().
Por fim, mostramos o gráfico usando plt.show(). Isso exibirá um gráfico de linhas com três linhas, cada uma representando a evolução dos preços de uma das três ações no período de 12 dias.
Conclusão
Neste tutorial mostrei como criar alguns tipos de gráficos simples usando a biblioteca matplotlib. Vimos que esta biblioteca é bastante versátil, e permite a plotagem de gráficos de forma simples e com pouco código.
Existem muitos outros tipos de gráficos que podem ser criados com o uso do módulo matplotlib em Python, inclusive gráficos avançados e complexos, como histogramas, mapas de calor, boxplots e gráficos 3D, entre outros. Uma lista completa pode ser consultada na página da documentação oficial: Tipos de Gráficos com Matplotlib.
Conteúdo muito bem explicado. Parabéns.
Obrigado Ricardo!