Pular para o conteúdo principal
InicioTutoriaisPython

Introdução à plotagem com Matplotlib em Python

Este tutorial demonstra como usar o Matplotlib, uma poderosa biblioteca de visualização de dados em Python, para criar gráficos de linha, barra e dispersão com dados do mercado de ações.
abr. de 2024  · 25 min leer

O Matplotlib é uma biblioteca de visualização de dados avançada e muito popular em Python. Neste tutorial, discutiremos como criar gráficos de linhas, gráficos de barras e gráficos de dispersão no Matplotlib usando dados do mercado de ações em 2022. Esses são os gráficos básicos que permitirão que você comece a entender, visualizar e contar histórias sobre dados. A visualização de dados é uma habilidade essencial para todos os analistas de dados, e a Matplotlib é uma das bibliotecas mais populares para a criação de visualizações. 

Este tutorial requer algum conhecimento prévio básico sobre matrizes NumPy e quadros de dados do pandas. Quando usarmos essas bibliotecas, explicaremos rapidamente o que estamos fazendo. O foco principal deste tutorial é o Matplotlib, que funciona com base nessas estruturas de dados para criar visualizações. 

O Matplotlib é muito flexível e personalizável para a criação de gráficos. É necessário muito código para criar gráficos mais básicos com poucas personalizações. Ao trabalhar em um ambiente em que a análise exploratória de dados é o principal objetivo, exigindo muitos gráficos desenhados rapidamente sem tanta ênfase na estética, a biblioteca seaborn é uma ótima opção, pois se baseia no Matplotlib para criar visualizações mais rapidamente. Consulte nosso tutorial Python Seaborn para iniciantes se a análise exploratória de dados ou a criação rápida e fácil de gráficos for sua principal prioridade.

Exemplos do Matplotlib

Ao final deste tutorial, você será capaz de fazer visualizações de excelente aparência no Matplotlib. Vamos nos concentrar na criação de gráficos de linhas, gráficos de barras e gráficos de dispersão. Também nos concentraremos em como tomar decisões de personalização, como o uso de cores, como rotular gráficos e como organizá-los de forma clara para contar uma história interessante.

image14.png

image13.png

image7.png

O conjunto de dados

O Matplotlib foi projetado para trabalhar com matrizes NumPy e quadros de dados pandas. A biblioteca facilita a criação de gráficos a partir de dados tabulares. Para este tutorial, usaremos os preços históricos do índice Dow Jones Industrial Average (DJIA) de 2022-01-01 a 2022-12-31(encontrados aqui). Você pode definir o intervalo de datas na página e, em seguida, clicar no botão "baixar uma planilha".

Carregaremos o arquivo csv, denominado HistoricalPrices.csv, usando a biblioteca pandas e visualizaremos as primeiras linhas usando o método .head().

import pandas as pd

djia_data = pd.read_csv('HistoricalPrices.csv')
djia_data.head()

image19.png

Vemos que os dados incluem 4 colunas, uma Data, Abertura, Alta, Baixa e Fechamento. Os últimos 4 estão relacionados ao preço do índice durante o dia de negociação. Abaixo está uma breve explicação de cada variável.

  • Data: O dia que as informações sobre o preço das ações representam.
  • Aberto: O preço do DJIA às 9:30 AM ET, quando o mercado de ações abre.
  • Alta: O preço mais alto que o DJIA atingiu durante o dia.
  • Baixo: O preço mais baixo que o DJIA atingiu durante o dia.
  • Fechar: O preço do DJIA quando o mercado parou de ser negociado às 4:00 PM ET.

Como uma etapa rápida de limpeza, também precisaremos usar o método rename() em pandas, pois o conjunto de dados que baixamos tem um espaço extra nos nomes das colunas. 

djia_data = djia_data.rename(columns = {' Open': 'Open', ' High': 'High', ' Low': 'Low', ' Close': 'Close'})

Também garantiremos que a variável Date seja uma variável de data e hora e classificaremos em ordem crescente pela data.  

djia_data['Date'] = pd.to_datetime(djia_data['Date'])
djia_data = djia_data.sort_values(by = 'Date')

Carregando o Matplotlib

Em seguida, carregaremos o submódulo pyplot do Matplotlib para que possamos desenhar nossos gráficos. O módulo pyplot contém todos os métodos relevantes de que precisaremos para criar gráficos e estilizá-los. Usaremos o alias convencional plt. Também carregaremos o pandas, o numpy e o datetime em partes futuras deste tutorial.

import matplotlib.pyplot as plt
import pandas as pd
import numpy as np
from datetime import datetime

Desenho de gráficos de linhas

O primeiro gráfico que criaremos será um gráfico de linhas. Os gráficos de linhas são um tipo de gráfico muito importante, pois fazem um ótimo trabalho na exibição de dados de séries temporais. Muitas vezes, é importante visualizar como os KPIs mudam ao longo do tempo para entender os padrões nos dados que podem ser acionados.

Gráficos de linhas com uma única linha

  • Mostrar como desenhar um gráfico de linhas simples com uma única linha.
    • Certifique-se de enfatizar o uso de plt.show() para que o gráfico seja realmente exibido.
  • Faça um breve comentário sobre o enredo, incluindo a interpretação.

Podemos criar um gráfico de linhas no matplotlib usando o método plt.plot() em que o primeiro argumento é a variável x e o segundo argumento é a variável y em nosso gráfico de linhas. Sempre que criamos um gráfico, precisamos nos certificar de chamar plt.show() para garantir a visualização do gráfico que criamos.  Visualizaremos o preço de fechamento ao longo do tempo do DJIA. 

plt.plot(djia_data['Date'], djia_data['Close'])
plt.show()

image1.png

Podemos ver que, ao longo do ano, o preço do índice começou em seu valor mais alto, seguido de algumas flutuações para cima e para baixo ao longo do ano. Vemos que o preço foi mais baixo por volta de outubro, seguido por um forte aumento de preço no final do ano.

Gráficos de linhas com várias linhas

Podemos visualizar várias linhas no mesmo gráfico adicionando outra chamada plt.plot() antes da função plt.show().

plt.plot(djia_data['Date'], djia_data['Open'])
plt.plot(djia_data['Date'], djia_data['Close'])


plt.show()

image16.png

Ao longo do ano, vemos que os preços de abertura e fechamento do DJIA foram relativamente próximos um do outro em cada dia, sem um padrão claro de um estar sempre acima ou abaixo do outro.  

Adição de uma legenda

Se quisermos distinguir qual linha representa qual coluna, podemos adicionar uma legenda. Isso criará um rótulo com código de cores no canto do gráfico. Podemos fazer isso usando plt.legend() e adicionando parâmetros de rótulo a cada chamada plt.plot()

plt.plot(djia_data['Date'], djia_data['Open'], label = 'Open')
plt.plot(djia_data['Date'], djia_data['Close'], label = 'Close')
plt.legend()
plt.show()

image2.png

Agora vemos uma legenda com os rótulos especificados aparecer no local padrão no canto superior direito (o local pode ser especificado usando o argumento loc em plt.legend()). 

Desenho de gráficos de barras

Os gráficos de barras são muito úteis para comparar valores numéricos entre categorias. Elas são particularmente úteis para encontrar as categorias maiores e menores. 

Nesta seção, agregaremos os dados em médias mensais usando o pandas para que possamos comparar o desempenho mensal do DJIA durante 2022. Também usaremos os primeiros 6 meses para facilitar a visualização dos dados.

# Import the calendar package 
from calendar import month_name

# Order by months by chronological order
djia_data['Month'] = pd.Categorical(djia_data['Date'].dt.month_name(), month_name[1:])

# Group metrics by monthly averages
djia_monthly_mean = djia_data \
    .groupby('Month') \
    .mean() \
    .reset_index()

djia_monthly_mean.head(6)

image5.png

Gráficos de barras verticais

Começaremos criando um gráfico de barras com barras verticais. Isso pode ser feito usando o método plt.bar() com o primeiro argumento sendo a variável do eixo x (Month) e o parâmetro height sendo o eixo y (Close).  Em seguida, devemos nos certificar de chamar plt.show() para mostrar nosso gráfico.

plt.bar(djia_monthly_mean['Month'], height = djia_monthly_mean['Close'])
plt.show()

image9.png

Vemos que a maioria dos preços de fechamento do DJIA foram próximos uns dos outros, sendo que o menor valor médio de fechamento foi em junho e o maior valor médio de fechamento foi em janeiro.

Reordenação de barras em gráficos de barras

Se quisermos mostrar essas barras na ordem do preço de fechamento médio mensal mais alto para o mais baixo, poderemos classificar as barras usando o método sort_values() no pandas e, em seguida, usando o mesmo método plt.bar(). 

djia_monthly_mean_srtd = djia_monthly_mean.sort_values(by = 'Close', ascending = False)

plt.bar(djia_monthly_mean_srtd['Month'], height = djia_monthly_mean_srtd['Close'])
plt.show()

image10.png

Como você pode ver, é muito mais fácil ver quais meses tiveram a maior média de preço de fechamento do DJIA e quais meses tiveram as médias mais baixas. Também é mais fácil comparar os meses e classificar os meses.

Gráficos de barras horizontais

  • Mostre como trocar os eixos, de modo que as barras fiquem na horizontal.
  • Faça um breve comentário sobre o enredo, incluindo a interpretação.

Às vezes, é mais fácil interpretar os gráficos de barras e ler os rótulos quando fazemos o gráfico de barras com barras horizontais. Podemos fazer isso usando o método plt.hbar().  

plt.barh(djia_monthly_mean_srtd['Month'], height = djia_monthly_mean_srtd['Close'])
plt.show()

image17.png
Como você pode ver, os rótulos de cada categoria (mês) são mais fáceis de ler do que quando as barras estavam na vertical. Ainda assim, podemos comparar facilmente os grupos. Esse gráfico de barras horizontais é especialmente útil quando há muitas categorias.

Desenho de gráficos de dispersão

Os gráficos de dispersão são muito úteis para identificar relações entre duas variáveis numéricas. Isso pode lhe dar uma noção do que esperar de uma variável quando a outra variável muda e também pode ser muito informativo em sua decisão de usar diferentes técnicas de modelagem, como regressão linear ou não linear.  

Gráficos de dispersão

Da mesma forma que os outros gráficos, um gráfico de dispersão pode ser criado usando pyplot.scatter(), em que o primeiro argumento é a variável do eixo x e o segundo argumento é a variável do eixo y. Neste exemplo, analisaremos a relação entre o preço de abertura e o preço de fechamento do DJIA.

plt.scatter(djia_data['Open'], djia_data['Close'])
plt.show()

image4.png

No eixo x, temos o preço de abertura do DJIA e, no eixo y, temos o preço de fechamento. Como seria de se esperar, à medida que o preço de abertura aumenta, observamos uma forte relação com o aumento do preço de fechamento também.

Gráficos de dispersão com uma linha de tendência

Em seguida, adicionaremos uma linha de tendência ao gráfico para mostrar a relação linear entre as variáveis de abertura e fechamento de forma mais explícita. Para isso, usaremos o método numpy polyfit() e poly1d(). O primeiro método nos dará um ajuste polinomial de mínimos quadrados em que o primeiro argumento é a variável x, a segunda variável é a variável y e a terceira variável é o grau do ajuste (1 para linear). O segundo método nos dará uma classe polinomial unidimensional que podemos usar para criar uma linha de tendência usando plt.plot().

z = np.polyfit(djia_data['Open'], djia_data['Close'], 1)
p = np.poly1d(z)


plt.scatter(djia_data['Open'], djia_data['Close'])
plt.plot(djia_data['Open'], p(djia_data['Open']))
plt.show()

image20.png

Como podemos ver, a linha no plano de fundo do gráfico segue de perto a tendência do gráfico de dispersão, pois a relação entre o preço de abertura e de fechamento é fortemente linear. Vemos que, à medida que o preço de abertura aumenta, o preço de fechamento geralmente aumenta em uma taxa semelhante e linear.

Definição do título do gráfico e dos rótulos dos eixos

Os títulos dos gráficos e os rótulos dos eixos facilitam muito a compreensão de uma visualização e permitem que o visualizador entenda rapidamente o que está vendo com mais clareza. Podemos fazer isso adicionando mais camadas usando plt.xtitle(), plt.ylabel() e plt.xlabel(), o que demonstraremos com o gráfico de dispersão que fizemos na seção anterior. 

plt.scatter(djia_data['Open'], djia_data['Close'])
plt.show()

image8.png

Mudança de cores

A cor pode ser uma ferramenta poderosa nas visualizações de dados para enfatizar determinados pontos ou contar uma história consistente com cores consistentes para uma determinada ideia. No Matplotlib, podemos alterar as cores usando cores nomeadas (por exemplo, "vermelho", "azul" etc.), código hexadecimal ("#f4db9a", "#383c4a" etc.) e tuplas vermelho-verde-azul (por exemplo (125, 100, 37), (30, 54, 121), etc.). 

Linhas

Para um gráfico de linhas, podemos alterar uma cor usando o atributo color em plt.plot(). Abaixo, alteramos a cor de nossa linha de preço de abertura para "preto" e nossa linha de preço de fechamento para "vermelho".

plt.plot(djia_data['Date'], djia_data['Open'], color = 'black')
plt.plot(djia_data['Date'], djia_data['Close'], color = 'red')
plt.show()

image3.png

Barras

Para barras, podemos passar uma lista para o atributo color para especificar a cor de cada linha. Digamos que queiramos destacar o preço médio em janeiro para um argumento que estamos tentando fazer sobre o quão forte foi o preço médio de fechamento. Podemos fazer isso dando a essa barra uma cor exclusiva para chamar a atenção para ela. 

plt.bar(djia_monthly_mean_srtd['Month'], height = djia_monthly_mean_srtd['Close'], color = ['blue', 'gray', 'gray', 'gray', 'gray', 'gray'])
plt.show()

image11.png

Pontos

Por fim, para gráficos de dispersão, podemos alterar a cor usando o atributo de cor de plt.scatter(). Coloriremos todos os pontos em janeiro como azul e todos os outros pontos como cinza para mostrar uma história semelhante à da visualização acima. 

plt.scatter(djia_data[djia_data['Month'] == 'January']['Open'], djia_data[djia_data['Month'] == 'January']['Close'], color = 'blue')

plt.scatter(djia_data[djia_data['Month'] != 'January']['Open'], djia_data[djia_data['Month'] != 'January']['Close'], color = 'gray')

plt.show()

image18.png
Usando mapas de cores

Os mapas de cores são cores integradas do Matplotlib que são dimensionadas com base na magnitude do valor(documentação aqui). Em geral, os mapas de cores ficam esteticamente bem juntos e ajudam a contar uma história nos valores crescentes. 

No exemplo abaixo, usamos um mapa de cores passando o preço de fechamento (variável y) para o atributo c e o mapa de cores de plasma por meio de cmap. Vemos que, à medida que os valores aumentam, a cor associada fica mais brilhante e amarela, enquanto a extremidade inferior dos valores é roxa e mais escura.

plt.scatter(djia_data['Open'], djia_data['Close'], c=djia_data['Close'], cmap = plt.cm.plasma)

plt.show()

 image6.png

Definição dos limites do eixo

Às vezes, é útil observar um intervalo específico de valores em um gráfico. Por exemplo, se o DJIA estiver sendo negociado atualmente em torno de US$ 30.000, talvez só nos importemos com o comportamento em torno desse preço.  Podemos passar uma tupla para plt.xlim() e plt.ylim() para definir os limites x e y, respectivamente. O primeiro valor da tupla é o limite inferior, e o segundo valor da tupla é o limite superior.

image15.png

Salvando lotes

Por fim, podemos salvar os gráficos que criamos no matplotlib usando o método plt.savefig(). Podemos salvar o arquivo em vários formatos de arquivo diferentes, incluindo "png", "pdf" e "svg". O primeiro argumento é o nome do arquivo. O formato é inferido a partir da extensão do arquivo (ou você pode substituir isso com o argumento format ).

plt.scatter(djia_data['Open'], djia_data['Close'])
plt.savefig('DJIA 2022 Scatterplot Open vs. Close.png')

Leve-o para o próximo nível

Neste tutorial, abordamos os conceitos básicos do Matplotlib e agora você pode criar gráficos de linhas, gráficos de barras e gráficos de dispersão básicos. O Matplotlib é uma biblioteca avançada com muitos recursos excelentes para criar visualizações esteticamente agradáveis. Se quiser levar suas habilidades em Matplotlib para o próximo nível, faça nosso curso Introdução à visualização de dados com Matplotlib. Você também pode fazer o download da folha de dicas do Matplotlib: Plotting in Python para referência quando você começar a criar suas próprias visualizações. 

Perguntas frequentes sobre o Matplotlib

O que é o Matplotlib em Python?

O Matplotlib é uma biblioteca popular de visualização de dados em Python. Ele é frequentemente usado para criar visualizações estáticas, interativas e animadas em Python. O Matplotlib permite gerar gráficos, histogramas, gráficos de barras, gráficos de dispersão, etc., com apenas algumas linhas de código.

Por que devo usar o Matplotlib para visualização de dados?

Há vários motivos. Primeiro, o Matplotlib é flexível. Ele oferece suporte a uma ampla variedade de gráficos e plotagens e se integra bem a muitas outras bibliotecas Python, como NumPy e pandas. Em segundo lugar, é uma biblioteca madura e amplamente utilizada, portanto, tem uma comunidade forte e muitos recursos e tutoriais disponíveis. Por fim, como está em Python, você pode automatizar e personalizar seus gráficos como parte de seus pipelines de dados.

Como faço para instalar o Matplotlib?

Você pode instalar o Matplotlib com o pip, o instalador de pacotes do Python. Abra seu terminal e digite: pip install matplotlib. Se estiver usando um notebook Jupyter, você poderá executar esse comando em uma célula de código acrescentando um ponto de exclamação: !pip install matplotlib.

Como faço para criar um gráfico básico no Matplotlib?

Aqui está um exemplo simples. Primeiro, você precisará importar a biblioteca Matplotlib. O módulo mais comumente usado é o pyplot, que normalmente é importado com o alias plt:

import matplotlib.pyplot as plt

Em seguida, você pode criar um gráfico de linha básico como este:

plt.plot([1, 2, 3, 4]) plt.ylabel('Some Numbers') plt.show()

Neste exemplo, o site plt.plot([1, 2, 3, 4]) é usado para plotar a lista de números especificada. A linha plt.ylabel('Some Numbers') define o rótulo do eixo y e plt.show() exibe o gráfico.

Temas

Saiba mais sobre Python

Course

Introduction to Data Visualization with Matplotlib

4 hr
171K
Learn how to create, customize, and share data visualizations using Matplotlib.
See DetailsRight Arrow
Start Course
Veja MaisRight Arrow
Relacionado

blog

Como aprender Python do zero em 2024: um guia especializado

Descubra como aprender Python, suas aplicações e a demanda por competências em Python. Comece sua jornada em Python hoje mesmo ​com nosso guia detalhado.

Matt Crabtree

19 min

blog

Explorando 12 das melhores ferramentas de visualização de dados em 2023 com exemplos

Há muitas ferramentas de visualização de dados disponíveis. Neste artigo, preparamos uma lista abrangente de algumas das ferramentas de visualização de dados mais úteis na ciência de dados.
Javier Canales Luna 's photo

Javier Canales Luna

17 min

blog

Mais de 60 projetos Python para todos os níveis de conhecimento

60 ideias de projetos de ciência de dados que os cientistas de dados podem usar para criar um portfólio sólido, independentemente de sua especialização.
Bekhruz Tuychiev's photo

Bekhruz Tuychiev

16 min

tutorial

Como comentar um bloco de código em Python

O uso de comentários é fundamental para trabalhar efetivamente com Python. Neste breve tutorial, aprenda a comentar um bloco de código em Python.
Adel Nehme's photo

Adel Nehme

3 min

tutorial

Como aparar uma cadeia de caracteres em Python: Três métodos diferentes

Aprenda os fundamentos do corte de caracteres à esquerda e à direita de uma string em Python.
Adel Nehme's photo

Adel Nehme

5 min

tutorial

Tutorial de Python

Em Python, tudo é objeto. Números, cadeias de caracteres (strings), DataFrames, e até mesmo funções são objetos. Especificamente, qualquer coisa que você usa no Python tem uma classe, um modelo associado por trás.
DataCamp Team's photo

DataCamp Team

3 min

See MoreSee More