Introdução ao Matplotlib
O Matplotlib é uma biblioteca de visualização de dados incrivelmente poderosa para a linguagem de programação Python. Amplamente reconhecida por sua versatilidade e eficiência, esta ferramenta é uma escolha popular entre cientistas de dados e entusiastas de machine learning. O Matplotlib permite criar uma vasta gama de gráficos estáticos, animados e interativos com apenas algumas linhas de código. Para quem está começando em machine learning, dominar o Matplotlib é fundamental para explorar conjuntos de dados e apresentar insights de forma clara e impactante.
Configuração Inicial no Google Colab
Para desfrutar dos recursos do Matplotlib no Google Colab, siga estes passos simples:
- Acesse o Google Colab e crie um novo notebook.
- No topo da célula do notebook, digite e execute o comando de importação:
123import matplotlibimport matplotlib.pyplot as plt - Verifique a instalação com:
12print(matplotlib.__version__)
Com o ambiente pronto, você pode começar a criar seus primeiros gráficos!
Aprenda Machine Learning em 5 Dias. Curso 100% Prático.
Melhor Preço por Tempo Limitado. Clique Aqui e Teste Sem Risco.
30 Dias de Satisfação Garantida!
Primeiros Passos com Matplotlib
Plotagem de um Gráfico de Dispersão (Scatter Plot)
O gráfico de dispersão é útil para visualizar a relação entre duas variáveis.
1 2 3 4 5 6 7 8 9 10 |
import matplotlib import matplotlib.pyplot as plt x = [1, 2, 3, 4, 5] y = [2, 3, 4, 5, 6] plt.scatter(x, y) plt.title("Gráfico de Dispersão Simples") plt.xlabel("Eixo X") plt.ylabel("Eixo Y") plt.show() |
O gráfico de dispersão, ou scatter plot, é uma ferramenta fundamental na visualização de dados e é essencialmente utilizado para explorar a relação ou correlação entre duas variáveis numéricas. Aqui está um passo a passo do que acontece no bloco de código que gera um gráfico de dispersão utilizando a biblioteca Matplotlib em Python:
- Importação da Biblioteca:
12import matplotlib.pyplot as plt
O primeiro passo é importar o módulomatplotlib.pyplot
, geralmente abreviado paraplt
. Este módulo é uma coleção de funções que tornam o Matplotlib semelhante ao MATLAB, oferecendo uma interface simples para geração de gráficos. - Definindo os Dados:
123x = [1, 2, 3, 4, 5]y = [2, 3, 4, 5, 6]
Criamos duas listas:x
ey
, cada uma contendo uma sequência de números. No contexto do gráfico de dispersão, cada par de elementos correspondentes(x[i], y[i])
representa uma coordenada que será plotada no gráfico. A listax
geralmente representa a variável independente, enquanto a listay
representa a variável dependente. - Utilização da Função
scatter()
:
12plt.scatter(x, y)
Chamamos a funçãoscatter()
do módulomatplotlib.pyplot
, que recebe os dados do eixox
e do eixoy
e gera os pontos no gráfico de dispersão. Por padrão, cada ponto é representado por um marcador circular. - Adicionando Títulos e Rótulos:
1234plt.title("Gráfico de Dispersão Simples")plt.xlabel("Eixo X")plt.ylabel("Eixo Y")
A funçãotitle()
é utilizada para adicionar um título ao gráfico. De forma similar, as funçõesxlabel()
eylabel()
são usadas para adicionar rótulos aos eixosx
ey
, respectivamente. Essas legendas são importantes pois ajudam na interpretação dos dados, facilitando o entendimento do que cada eixo representa. - Exibição do Gráfico:
12plt.show()
Por fim, a funçãoshow()
é chamada para exibir a figura criada. Quando esta função é executada, uma janela com o gráfico de dispersão é aberta, permitindo a visualização dos pontos que foram plotados.
Este código produz um gráfico simples e claro que mostra a relação linear entre as listas x
e y
. Através deste gráfico, é possível identificar visualmente tendências, padrões e até mesmo outliers (pontos que se desviam significativamente da tendência dos demais dados).
Plotar um gráfico de dispersão (Scatter Plot) é uma excelente forma de visualizar a distribuição e relação entre duas variáveis. No contexto dos principais Cloud Providers Mundiais, podemos usar um gráfico de dispersão para comparar, por exemplo, a receita global e o crescimento ano a ano dessas empresas. Vamos criar um exemplo um pouco mais complexo que analisa essas métricas.
Preparando os Dados
Suponha que temos os seguintes dados para os Cloud Providers:
1 2 3 4 |
cloud_providers = ['AWS', 'Azure', 'Google Cloud', 'IBM', 'Alibaba'] receita = [35.03, 15.16, 8.92, 6.01, 5.65] # Receita em bilhões de dólares crescimento = [29, 47, 52, 11, 62] # Crescimento percentual ano a ano |
Aqui, cloud_providers
é uma lista de nomes dos fornecedores de nuvem, receita
representa a receita anual mais recente de cada um (em bilhões de dólares), e crescimento
é o crescimento percentual de receita ano a ano para cada fornecedor.
Plotagem do Gráfico de Dispersão
Vamos plotar os dados em um gráfico de dispersão e adicionar algumas personalizações:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 |
import matplotlib import matplotlib.pyplot as plt # Configuração do tamanho da figura para melhor visibilidade plt.figure(figsize=(10, 6)) # Criação do gráfico de dispersão for i in range(len(cloud_providers)): plt.scatter(receita[i], crescimento[i], label=cloud_providers[i], s=100, alpha=0.5) # Títulos e rótulos dos eixos plt.title('Posicionamento dos Principais Cloud Providers Mundiais', fontsize=16) plt.xlabel('Receita Anual (em bilhões de dólares)', fontsize=12) plt.ylabel('Crescimento Ano a Ano (%)', fontsize=12) # Adição de uma grade para melhor leitura dos dados plt.grid(True) # Inclusão de uma legenda para identificar cada ponto plt.legend() # Exibição do gráfico plt.show() |
Neste gráfico de dispersão, utilizamos um loop for
para iterar sobre as listas de receita
e crescimento
, plotando cada ponto individualmente. Cada fornecedor de nuvem é representado por um ponto no gráfico, cuja posição é determinada pelo seu valor de receita e crescimento. O tamanho do ponto (s=100
) é uniforme para todos, enquanto o parâmetro alpha
regula a transparência dos pontos, permitindo melhor visualização caso haja sobreposição. A legenda é importante para identificar cada ponto com seu respectivo fornecedor.
Esse gráfico é útil para stakeholders e analistas de mercado que desejam entender rapidamente como cada fornecedor está posicionado em termos de receita e crescimento. Insights como “o fornecedor com maior receita também é o que cresce mais rápido?” ou “há fornecedores menores com taxas de crescimento altas?” podem ser facilmente obtidos a partir desta visualização.
Ao plotar um gráfico de dispersão (Scatter Plot), a intenção é muitas vezes identificar visualmente qualquer correlação entre duas variáveis numéricas. A presença de padrões, a direção e a densidade dos pontos podem sugerir diferentes tipos de relações. Vamos criar um exemplo que ilustra claramente como esse tipo de gráfico pode ser utilizado para explicar a relação e correlação entre variáveis numéricas.
Exemplo: Relação entre Horas de Estudo e Pontuação em um Teste
Suponha que temos um conjunto de dados que inclui as horas gastas estudando e as pontuações obtidas em um teste por um grupo de estudantes:
1 2 3 |
horas_estudo = [1, 2, 3, 4, 5, 6, 7, 8] pontuacao_teste = [50, 55, 60, 65, 70, 75, 80, 85] |
A variável horas_estudo
representa a quantidade de tempo que cada estudante gastou estudando, enquanto pontuacao_teste
é a pontuação que cada um obteve no teste.
Plotando o Gráfico de Dispersão
Vamos criar um gráfico de dispersão para essas duas variáveis e adicionar uma linha de tendência para ajudar a visualizar a correlação:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 |
import matplotlib.pyplot as plt import numpy as np #Declaração das variáveis com seus dados horas_estudo = [1, 2, 3, 4, 5, 6, 7, 8] pontuacao_teste = [50, 55, 60, 65, 70, 75, 80, 85] # Criação do gráfico de dispersão plt.scatter(horas_estudo, pontuacao_teste, alpha=0.6, edgecolors='w', s=100) # Cálculo da linha de tendência z = np.polyfit(horas_estudo, pontuacao_teste, 1) p = np.poly1d(z) plt.plot(horas_estudo, p(horas_estudo), "r--") # Títulos e rótulos dos eixos plt.title('Relação entre Horas de Estudo e Pontuação no Teste', fontsize=16) plt.xlabel('Horas de Estudo', fontsize=12) plt.ylabel('Pontuação no Teste', fontsize=12) # Adição de uma grade para melhor leitura dos dados plt.grid(True) # Adição de uma grade para melhor leitura dos dados plt.grid(True) |
Neste gráfico, cada ponto representa um estudante, com o eixo X mostrando as horas de estudo e o eixo Y as pontuações no teste. A linha vermelha pontilhada é a linha de tendência, que foi calculada usando uma função de ajuste polinomial (np.polyfit()
e np.poly1d()
), indicando a direção geral da correlação entre as variáveis.
- Cálculo da linha de tendência:
z = np.polyfit(horas_estudo, pontuacao_teste, 1)
: A funçãonp.polyfit()
da biblioteca NumPy é utilizada para ajustar um polinômio de grau especificado (neste caso, 1, indicando um polinômio linear) aos dados fornecidos. Ela retorna os coeficientes do polinômio que melhor se ajusta aos dados, no sentido dos mínimos quadrados. Para um polinômio de grau 1,z
conterá dois valores: a inclinação da linha (slope
) e o intercepto y (intercept
).p = np.poly1d(z)
: Após obter os coeficientes,np.poly1d()
é utilizado para criar um objeto polinomialp
a partir dos coeficientesz
. Este objeto é uma função que pode ser chamada com um valor dex
(neste caso,horas_estudo
), retornando o valor dey
correspondente na linha de tendência calculada.
- Desenho da linha de tendência no gráfico:
plt.plot(horas_estudo, p(horas_estudo), "r--")
: Esta linha utiliza a funçãoplt.plot()
para desenhar a linha de tendência no gráfico.horas_estudo
é usado como o eixo x, ep(horas_estudo)
calcula os valores correspondentes no eixo y usando a função polinomialp
criada anteriormente."r--"
define o estilo da linha de tendência, onde"r"
significa vermelho e"--"
indica que a linha será tracejada.
Este processo é essencial para análise de dados e visualização, pois a linha de tendência ajuda a entender a relação entre as variáveis analisadas. No contexto deste código, a linha de tendência mostra como a pontuação do teste tende a variar com o número de horas estudadas. Se a inclinação da linha for positiva, indica que há uma tendência de aumento na pontuação com o aumento das horas de estudo. Uma inclinação negativa indicaria o contrário. A visualização dessa relação em um gráfico ajuda não apenas a entender os dados atuais, mas também a fazer previsões sobre dados futuros dentro do mesmo contexto.
Interpretação da Correlação
Ao observar o gráfico, podemos ver que há um padrão ascendente nos pontos: quanto mais horas de estudo, maior a pontuação no teste, o que sugere uma correlação positiva entre as duas variáveis. A linha de tendência reforça visualmente essa relação. Essa informação é valiosa, por exemplo, para professores que querem enfatizar a importância do estudo na melhora do desempenho dos alunos.
Gráficos de dispersão são, portanto, ferramentas poderosas que ajudam a identificar tendências e padrões, possibilitando inferências sobre a força e a direção da relação entre variáveis numéricas, elementos fundamentais em campos como estatística, ciência de dados e pesquisa em geral.
Criação de um Gráfico de Barras (Bar Chart)
Ideal para comparar diferentes grupos.
1 2 3 4 5 6 7 8 9 |
import matplotlib import matplotlib.pyplot as plt categorias = ['A', 'B', 'C', 'D'] valores = [3, 7, 2, 5] plt.bar(categorias, valores) plt.title("Gráfico de Barras Simples") plt.show() |
O gráfico de barras é uma forma de representação gráfica que é utilizada para comparar valores entre diferentes categorias. É composto por barras, que podem ser exibidas horizontal ou verticalmente, e é particularmente útil quando se quer comparar várias categorias de dados entre si. Vamos detalhar o que acontece neste exemplo específico de código que cria um gráfico de barras utilizando o Matplotlib:
- Definição das Categorias e Valores:
123categorias = ['A', 'B', 'C', 'D']valores = [3, 7, 2, 5]
Aqui, duas listas são definidas:categorias
evalores
. A listacategorias
contém rótulos de texto que representam as diferentes categorias a serem comparadas no gráfico. A listavalores
contém números que correspondem ao tamanho ou medida de cada categoria. - Criação do Gráfico de Barras:
12plt.bar(categorias, valores)
A funçãobar()
é utilizada para desenhar o gráfico de barras. Os rótulos das categorias são passados como o primeiro argumento, e os respectivos valores são o segundo argumento. Esta função irá automaticamente associar cada valor com sua categoria correspondente e exibir as barras no gráfico com alturas proporcionais aos valores fornecidos. - Adicionando Título ao Gráfico:
12plt.title("Gráfico de Barras Simples")
A funçãotitle()
adiciona um título ao gráfico. Títulos são cruciais para fornecer ao leitor uma rápida compreensão do que o gráfico está apresentando. - Visualização do Gráfico:
12plt.show()
Por fim,show()
é a função que renderiza e exibe o gráfico. Quando essa função é chamada, uma janela é aberta mostrando o gráfico de barras com as categorias no eixox
e os valores representados pelas alturas das barras no eixoy
.
O gráfico de barras gerado a partir deste código facilita a comparação imediata entre as quatro categorias distintas, permitindo a visualização rápida de qual categoria possui o maior ou menor valor. É uma ferramenta visual extremamente eficaz para destacar diferenças entre grupos e é amplamente utilizado em relatórios de negócios, pesquisa acadêmica e, claro, na área de machine learning e análise de dados, para obter insights dos dados categóricos.
Gráficos de barras são excelentes para comparar visualmente quantidades em diferentes categorias e podem revelar de maneira clara as diferenças entre elas. Vamos criar um exemplo de um gráfico de barras que destaca a utilidade dessa ferramenta no mundo prático, por exemplo, ao comparar a receita gerada por diferentes filiais de uma empresa.
Exemplo: Receita Anual por Filial
Imagine que uma empresa possui cinco filiais e deseja visualizar a receita de cada uma no último ano para tomar decisões estratégicas. Aqui estão os dados:
1 2 3 |
filiais = ['Filial A', 'Filial B', 'Filial C', 'Filial D', 'Filial E'] receita = [200, 240, 150, 400, 220] # Receita em milhares de dólares |
As filiais
são as categorias, e os valores em receita
representam a receita anual em milhares de dólares para cada uma.
Plotagem do Gráfico de Barras
Agora, vamos plotar um gráfico de barras para visualizar essas informações:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 |
import matplotlib import matplotlib.pyplot as plt filiais = ['Filial A', 'Filial B', 'Filial C', 'Filial D', 'Filial E'] receita = [200, 240, 150, 400, 220] # Receita em milhares de dólares # Definindo as posições das barras no eixo X #Esta linha cria uma sequência de números iguais ao número de filiais, que #será usada para definir as posições das barras no eixo X do gráfico. posicoes = range(len(filiais)) # Criação do gráfico de barras plt.bar(posicoes, receita, color='skyblue', edgecolor='black') # Adição dos nomes das filiais nas marcas do eixo X #A função plt.xticks() é usada para adicionar os nomes das filiais como #rótulos nas marcas do eixo X, utilizando as posições definidas anteriormente. plt.xticks(posicoes, filiais) # Título e rótulos dos eixos plt.title('Receita Anual por Filial', fontsize=16) plt.xlabel('Filiais', fontsize=12) plt.ylabel('Receita (em milhares de dólares)', fontsize=12) # Adição de uma grade no eixo Y para facilitar a comparação das barras plt.grid(True, axis='y', linestyle='--', alpha=0.7) # Exibição do gráfico plt.show() |
Neste gráfico, cada barra representa uma filial, e a altura da barra é proporcional à receita anual da filial correspondente. A escolha de uma cor suave como ‘skyblue' permite que os olhos do espectador se concentrem nas diferenças de altura das barras, enquanto a borda ‘black' ajuda a definir cada barra claramente.
Interpretação do Gráfico de Barras
A visualização clara das diferenças de altura entre as barras permite que gestores identifiquem imediatamente a filial com maior e menor receita. No nosso exemplo, é evidente que a ‘Filial D' supera significativamente as outras em termos de receita, o que pode suscitar perguntas sobre as estratégias bem-sucedidas implementadas nesta filial e como elas podem ser aplicadas nas outras. Por outro lado, a ‘Filial C' poderia ser um ponto de foco para investigação e melhorias.
O gráfico de barras aqui demonstra sua utilidade prática ao destacar as diferenças entre as categorias de uma maneira que é fácil e rápida de compreender, fornecendo uma base sólida para análises e decisões empresariais subsequentes.
Elaboração de um Histograma (Histogram)
Um histograma é um tipo de gráfico que permite visualizar a distribuição de frequências de um conjunto de dados.
Exemplo 1: Distribuição de Idades em um Local de Trabalho
Para criar um exemplo mais realista, vamos considerar a distribuição das idades dos funcionários em uma empresa de médio porte. Este é um exemplo de uso prático onde um histograma pode ajudar a visualizar a diversidade de idades e planejar iniciativas como programas de treinamento, aposentadoria ou recrutamento.
Neste caso, temos um conjunto de idades que representam os funcionários da empresa:
1 2 3 4 5 6 |
idades = [ 23, 29, 22, 35, 42, 39, 56, 48, 33, 36, 26, 24, 28, 30, 50, 45, 41, 31, 57, 55, 52, 47, 63, 59, 60, 38, 37, 49, 44, 43, 53, 27, 25, 34, 32, 40, 46, 58, 61, 54, 51, 64, 62, 65, 66, 67, 29, 21, 24, 28, 26, 30, 22, 35, 31, 48, 43, 38, 39, 36 ] # Idades dos funcionários |
Criando um Histograma
Com esses dados, podemos plotar um histograma que ilustrará a distribuição das idades:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 |
import matplotlib import matplotlib.pyplot as plt idades = [ 23, 29, 22, 35, 42, 39, 56, 48, 33, 36, 26, 24, 28, 30, 50, 45, 41, 31, 57, 55, 52, 47, 63, 59, 60, 38, 37, 49, 44, 43, 53, 27, 25, 34, 32, 40, 46, 58, 61, 54, 51, 64, 62, 65, 66, 67, 29, 21, 24, 28, 26, 30, 22, 35, 31, 48, 43, 38, 39, 36 ] # Idades dos funcionários # Criação do histograma plt.hist(idades, bins=[20, 30, 40, 50, 60, 70], color='dodgerblue', edgecolor='black') # Título e rótulos dos eixos plt.title('Distribuição de Idades no Local de Trabalho', fontsize=16) plt.xlabel('Idade', fontsize=12) plt.ylabel('Quantidade de Funcionários', fontsize=12) # Adição de marcações no eixo X para as faixas etárias plt.xticks([25, 35, 45, 55, 65]) # Exibição do histograma plt.show() |
A definição dos ‘bins' corresponde a faixas etárias de dez anos, facilitando a interpretação das principais faixas etárias na empresa. A cor ‘dodgerblue' é vibrante e torna as barras claramente visíveis, enquanto a borda ‘black' separa bem cada categoria de idade.
Este histograma fornece insights valiosos para o RH sobre a composição etária da força de trabalho. Ao examinar a altura das barras, a empresa pode identificar se possui uma população jovem, um equilíbrio de gerações, ou um grupo predominantemente sênior.
Usando os Dados para Planejamento Estratégico
Por exemplo, uma alta frequência de funcionários nas faixas mais jovens pode indicar a necessidade de programas de desenvolvimento de carreira para cultivar talentos a longo prazo. Por outro lado, se a maioria dos funcionários estiver nas faixas de maior idade, estratégias de planejamento sucessório e transmissão de conhecimento podem ser vitais.
O histograma, neste caso, é uma ferramenta poderosa de visualização que capacita os gestores a tomar decisões informadas sobre gestão de talentos e estratégias organizacionais, alinhando os esforços de recursos humanos com os objetivos a longo prazo da empresa.
Exemplo 2: Visualizando os Tempos de Resposta do Website com Histograma
Analisar os tempos de resposta de um website é essencial para compreender a experiência do usuário. Vamos criar um histograma baseado em uma simulação de dados que representam os tempos médios de resposta a cada hora em um dia.
Neste código Python, utilizamos a biblioteca numpy
para gerar 24 dados que simulam os tempos de resposta do website em um período de 24 horas. Substituímos aleatoriamente 5 desses dados para representar tempos de resposta superiores a 1 segundo, o que pode indicar uma experiência de usuário prejudicada.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 |
import matplotlib import matplotlib.pyplot as plt import numpy as np # Gerar 24 dados aleatórios para simular os tempos de resposta médios a cada hora do dia tempos_resposta = np.random.uniform(low=0.5, high=1.0, size=24) # Substituir aleatoriamente alguns valores por tempos de resposta > 1 segundo tempos_resposta[np.random.choice(np.arange(24), size=5, replace=False)] = np.random.uniform(low=1.0, high=1.5, size=5) # Criar o histograma plt.hist(tempos_resposta, bins=10, color='skyblue', edgecolor='black') # Adicionar títulos e rótulos plt.title('Distribuição dos Tempos de Resposta do Website') plt.xlabel('Tempo de Resposta (segundos)') plt.ylabel('Frequência') # Desenhar uma linha vertical em x=1 para facilitar a visualização dos tempos > 1 segundo plt.axvline(x=1, color='red', linestyle='--', label='1 segundo') # Adicionar legenda plt.legend() # Exibir o gráfico plt.show() |
Ao executar este script, obtemos um histograma que representa a distribuição dos tempos de resposta do website. A linha vertical vermelha em x=1
é um marcador visual significativo; ela divide o gráfico entre tempos de resposta que são considerados aceitáveis (menos de 1 segundo) e aqueles que podem comprometer a experiência do usuário (mais de 1 segundo).
Os picos no histograma indicam os intervalos de tempo de resposta mais frequentes. A cor ‘skyblue' fornece um contraste efetivo com a linha vermelha, destacando a região do gráfico onde os tempos de resposta excedem o limiar crítico de 1 segundo.
Esse tipo de visualização é inestimável para a equipe de TI ou de operações de um website, pois ajuda a identificar os períodos em que o desempenho do website precisa ser melhorado. Uma maior frequência de tempos acima de 1 segundo pode ser um indicador para possíveis intervenções, como otimização de código, aumento de recursos de servidor ou a implementação de soluções de cache mais eficientes.
Portanto, ao utilizar um histograma para visualizar os tempos de resposta do website, a equipe responsável pode agir proativamente para assegurar que o website opere dentro dos padrões ideais, mantendo os usuários satisfeitos com uma navegação rápida e eficaz.
Desenho de um Gráfico de Linhas (Line Graph)
Perfeito para visualizar tendências ao longo do tempo.
1 2 3 4 5 6 7 8 |
import matplotlib import matplotlib.pyplot as plt x = range(10) y = [x**2 for x in range(10)] plt.plot(x, y) plt.title("Gráfico de Linhas Simples") plt.show() |
O gráfico de linhas é uma das formas mais diretas e eficazes para representar tendências e mudanças ao longo do tempo ou para visualizar relações contínuas entre variáveis. É utilizado em uma ampla gama de campos, desde finanças até ciências naturais, pela sua capacidade de mostrar a evolução dos dados de forma clara e compreensível. Vamos explorar cada etapa do processo de criação de um gráfico de linhas usando o Matplotlib:
- Definição dos Dados das Coordenadas X e Y:
123x = range(10)y = [x**2 for x in range(10)]
Criamos uma sequência de números (de 0 a 9, neste caso) que serão usados como pontos no eixo X. Para os valores correspondentes do eixo Y, aplicamos uma operação (neste exemplo, a potência quadrada) para cada valor em X. O resultado é uma lista de valores Y que mostra uma tendência crescente – cada valor de Y é o quadrado de seu correspondente X. - Plotagem do Gráfico de Linhas:
12plt.plot(x, y)
A funçãoplot()
é chamada para desenhar o gráfico de linhas. A função conecta os pontos definidos pelos valores de X e Y com linhas, criando uma representação gráfica da relação entre essas duas variáveis. - Adição de um Título ao Gráfico:
12plt.title("Gráfico de Linhas Simples")
A funçãotitle()
adiciona um título descritivo ao gráfico de linhas. Isso fornece um contexto adicional e ajuda os observadores a entenderem rapidamente o que o gráfico está demonstrando. - Exibição do Gráfico:
12plt.show()
O métodoshow()
é usado para exibir a figura gerada. Quando chamado, ele abre uma janela gráfica que mostra o gráfico de linhas, com os pontos conectados por linhas, exibindo a relação entre os eixos X e Y.
Este gráfico de linhas em particular ilustra uma relação quadrática entre X e Y, mostrando que, conforme X aumenta, Y aumenta numa taxa que se acelera (por ser o quadrado de X).
Gráficos de linhas como esse são extremamente úteis para análise de tendências, pois as linhas suavizam variações pontuais e destacam a direção em que os dados estão se movendo. Em machine learning, gráficos de linhas são frequentemente usados para avaliar o desempenho dos algoritmos ao longo de várias iterações de treinamento, e em análise de dados, para visualizar séries temporais e outras tendências contínuas nos dados.
Integração com Pandas para Visualização de Dados
Matplotlib e Pandas formam uma combinação poderosa para visualizar dados diretamente de DataFrames.
1 2 3 4 5 6 7 8 9 10 11 12 13 |
import pandas as pd # Exemplo com dados financeiros dados_financeiros = {'Ano': [2015, 2016, 2017, 2018], 'Lucro': [15, 18, 20, 22]} df = pd.DataFrame(dados_financeiros) df.plot(x='Ano', y='Lucro', kind='line') plt.show() # Exemplo com dados climáticos dados_climaticos = pd.DataFrame({'Temperatura': [22, 24, 19, 24]}) dados_climaticos.hist(bins=3) plt.show() |
A biblioteca Pandas, em conjunto com o Matplotlib, oferece recursos sofisticados para a visualização de dados que estão estruturados em DataFrames, uma estrutura de dados bidimensional e versátil do Pandas. A capacidade de criar visualizações a partir de DataFrames sem a necessidade de extração prévia de informações simplifica o processo de análise de dados. Exploraremos como funciona essa integração:
- Importação da Biblioteca Pandas:
12import pandas as pd
Pandas é uma biblioteca do Python que fornece estruturas de dados de alto desempenho e fáceis de usar, juntamente com ferramentas de análise de dados. Começamos importando essa biblioteca para poder usar seus recursos de maneira eficaz. - Criação do DataFrame com Dados Financeiros:
123dados_financeiros = {'Ano': [2015, 2016, 2017, 2018], 'Lucro': [15, 18, 20, 22]}df = pd.DataFrame(dados_financeiros)
Aqui, um dicionário com duas chaves (‘Ano' e ‘Lucro') e uma lista de valores associados é convertido em um DataFrame, que é uma das estruturas de dados centrais do Pandas. Cada chave do dicionário torna-se uma coluna no DataFrame, e a lista de valores associada a cada chave torna-se as linhas correspondentes a essa coluna. - Visualização dos Dados Financeiros com Plot:
12df.plot(x='Ano', y='Lucro', kind='line')
O métodoplot()
do DataFrame é utilizado para gerar o gráfico de linhas. Especificamos que a coluna ‘Ano' deve ser usada para o eixo X e ‘Lucro' para o eixo Y. O argumentokind='line'
informa que queremos um gráfico de linhas. - Exibição do Gráfico de Linhas:
12plt.show()
Ao chamarmosplt.show()
, o Matplotlib renderiza o gráfico de linhas, exibindo a tendência do lucro ao longo dos anos especificados. - Criação do DataFrame com Dados Climáticos:
12dados_climaticos = pd.DataFrame({'Temperatura': [22, 24, 19, 24]})
Similarmente, outro DataFrame é criado, desta vez contendo dados climáticos de temperatura. - Visualização dos Dados Climáticos com Histograma:
12dados_climaticos.hist(bins=3)
Para a visualização da distribuição de temperaturas, utilizamos o métodohist()
, que cria um histograma para a coluna ‘Temperatura'. O parâmetrobins=3
especifica que queremos que os dados sejam agrupados em 3 intervalos. - Exibição do Histograma:
12plt.show()
Novamente,plt.show()
é chamado para mostrar o gráfico, desta vez um histograma das temperaturas registradas.
A integração do Matplotlib com o Pandas torna o processo de visualização de dados altamente intuitivo e eficiente. Com apenas algumas linhas de código, é possível criar gráficos de linhas, histogramas e muitos outros tipos de visualizações diretamente de um DataFrame, permitindo que os analistas e cientistas de dados se concentrem em extrair insights significativos dos dados, ao invés de se preocuparem com detalhes técnicos de plotagem de gráficos.
Design de Gráficos
O design eficaz de gráficos é uma ferramenta poderosa para aprimorar a comunicação de dados complexos. Aqui estão dois exemplos práticos de como podemos personalizar gráficos para diferentes conjuntos de dados, tornando-os visualmente atraentes e informativos:
Exemplo 1: Desempenho de Vendas ao Longo do Ano
Consideremos um conjunto de dados que representa as vendas mensais de uma empresa:
1 2 3 |
meses = ['Janeiro', 'Fevereiro', 'Março', 'Abril', 'Maio', 'Junho'] vendas = [200, 220, 250, 270, 300, 320] |
Aqui, meses
são os dados para o eixo X, e vendas
são os dados para o eixo Y. Agora, vamos personalizar o gráfico de linhas:
1 2 3 4 5 6 7 8 |
plt.plot(meses, vendas, color='green', linestyle='-', marker='o') plt.title("Desempenho de Vendas ao Longo do Ano", fontsize=14, color='darkgreen') plt.xlabel("Meses", fontsize=12) plt.ylabel("Vendas (em unidades)", fontsize=12) plt.legend(['Unidades Vendidas']) plt.grid(True) plt.show() |
Neste gráfico, a cor verde simboliza crescimento, e os marcadores em forma de círculo (‘o') em cada ponto de dados ajudam a destacar as vendas de cada mês. A linha contínua (‘-‘) conecta os pontos, mostrando a tendência de crescimento ao longo do ano.
Exemplo 2: Comparação do Crescimento de Três Produtos
Agora, imaginemos que queremos comparar o crescimento de vendas de três produtos diferentes ao longo do tempo:
1 2 3 4 5 |
trimestres = [1, 2, 3, 4] produto_a = [60, 65, 72, 80] produto_b = [55, 68, 75, 85] produto_c = [50, 60, 80, 90] |
Cada lista representa as vendas de um produto em diferentes trimestres. Agora, vamos criar um gráfico de linhas para cada produto:
1 2 3 4 5 6 7 8 9 10 11 |
plt.plot(trimestres, produto_a, color='blue', linestyle='-', marker='s', linewidth=2) plt.plot(trimestres, produto_b, color='red', linestyle='--', marker='^', linewidth=2) plt.plot(trimestres, produto_c, color='purple', linestyle='-.', marker='d', linewidth=2) plt.title("Comparação do Crescimento de Três Produtos", fontsize=16, color='navy') plt.xlabel("Trimestres", fontsize=14) plt.ylabel("Vendas (em unidades)", fontsize=14) plt.legend(['Produto A', 'Produto B', 'Produto C']) plt.grid(True) plt.show() |
Cada linha tem uma cor distinta, um estilo diferente (sólida, tracejada, pontilhada), e marcadores distintos (quadrado, triângulo, losango) para representar visualmente a trajetória de vendas de cada produto. O gráfico personalizado facilita a comparação do desempenho dos produtos de um olhar e permite que a audiência identifique rapidamente padrões e tendências.
Através desses dois exemplos, fica evidente como a personalização no design de gráficos pode enriquecer a história que os dados contam e reforçar as conclusões que desejamos destacar. Ao optarmos por cores, estilos de linhas e marcadores, criamos uma narrativa visual que não apenas capta a atenção mas também facilita o entendimento.
A Interface Orientada a Objetos do Matplotlib: Mais Controle de Seus Gráficos
Quando se trata de criar visualizações de dados personalizadas, a interface orientada a objetos (OO) do Matplotlib oferece um nível de controle que supera em muito a simplicidade do pyplot. Esta abordagem permite não apenas criar gráficos mais complexos, mas também gerenciá-los de maneira mais eficiente, especialmente quando estamos lidando com múltiplas visualizações em uma única figura.
Considere o seguinte exemplo que ilustra a flexibilidade da interface OO do Matplotlib:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 |
import matplotlib import matplotlib.pyplot as plt # Dados para os gráficos a = [1, 2, 3, 4] b = [7, 3, 1, 4] c = [4, 2, 3, 5] # Criação de uma figura e dois subplots (axes) lado a lado fig, (ax1, ax2) = plt.subplots(1, 2, figsize=(10, 4)) # Utilização do primeiro Axes (ax1) para um gráfico de dispersão ax1.scatter(a, b, color='blue') ax1.set_title('Gráfico de Dispersão') ax1.set_xlabel('Eixo X') ax1.set_ylabel('Eixo Y') # Utilização do segundo Axes (ax2) para um gráfico de linha ax2.plot(a, c, color='red') ax2.set_title('Gráfico de Linha') ax2.set_xlabel('Eixo X') ax2.set_ylabel('Eixo Y') # Ajuste do layout para evitar sobreposições indesejadas fig.tight_layout() # Exibição dos gráficos plt.show() |
Ao usar a função plt.subplots(1, 2, figsize=(10, 4))
, nós efetivamente indicamos ao Matplotlib que queremos uma figura com uma linha e duas colunas de subplots, juntamente com um tamanho específico definido pelo figsize
. Isso nos dá uma tela dividida em duas áreas de gráfico distintas, referenciadas pelas variáveis ax1
e ax2
.
Com ax1.scatter()
e ax2.plot()
, cada gráfico é criado de forma independente dentro de sua respectiva área. Isso nos permite não apenas escolher diferentes tipos de gráficos para representar nossos dados, mas também ajustar títulos, rótulos dos eixos e outros elementos estéticos de forma individualizada. Por exemplo, um gráfico pode ser de dispersão enquanto o outro pode mostrar a evolução dos dados através de uma linha, facilitando a comparação e a análise conjunta dos dados.
Esse nível de detalhe e personalização é um poderoso recurso para quem precisa comunicar informações complexas de maneira clara e precisa, seja em relatórios, artigos científicos ou apresentações de negócios.
Portanto, dominar a interface orientada a objetos do Matplotlib é uma habilidade valiosa para qualquer pessoa que trabalha com análise de dados. Ela possibilita a construção de visualizações de dados que são ao mesmo tempo informativas e esteticamente agradáveis, proporcionando uma compreensão mais profunda dos dados representados.
Vamos a mais um exemplo. Suponha que queremos criar uma figura que contenha um gráfico de barras e um de linha, ilustrando diferentes tipos de dados que possuem algum tipo de relação. Por exemplo, podemos estar interessados em mostrar vendas de um produto (gráfico de barras) e a satisfação do cliente (gráfico de linha) ao longo do mesmo período de tempo.
Aqui está como poderíamos fazer isso:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 |
import matplotlib import matplotlib.pyplot as plt import numpy as np # Dados de exemplo meses = np.array(['Jan', 'Feb', 'Mar', 'Apr', 'May', 'Jun']) vendas = np.array([20, 35, 30, 35, 27, 25]) satisfacao_cliente = np.array([70, 82, 73, 65, 90, 83]) # Criação de um objeto Figure e dois objetos Axes fig, ax1 = plt.subplots() # Plotando as vendas com um gráfico de barras no primeiro Axes ax1.bar(meses, vendas, color='g', label='Vendas') ax1.set_xlabel('Mês') ax1.set_ylabel('Vendas', color='g') ax1.tick_params('y', colors='g') # Criando um segundo Axes que compartilha o mesmo eixo x ax2 = ax1.twinx() # Plotando a satisfação do cliente com um gráfico de linha no segundo Axes ax2.plot(meses, satisfacao_cliente, color='b', label='Satisfação do Cliente') ax2.set_ylabel('Satisfação do Cliente (%)', color='b') ax2.tick_params('y', colors='b') # Adicionar títulos e mostrar a legenda fig.suptitle('Vendas e Satisfação do Cliente por Mês') ax1.legend(loc='upper left') ax2.legend(loc='upper right') # Mostrar o gráfico plt.show() |
Neste exemplo, o objeto ax1
é usado para plotar o gráfico de barras e o objeto ax2
é criado com a chamada ax1.twinx()
, o que significa que ax2
é um novo conjunto de eixos que compartilha o eixo x com ax1
, mas tem um eixo y independente. Isso é particularmente útil quando temos variáveis com diferentes escalas de medida.
No gráfico de barras (ax1.bar
), as vendas são representadas como barras verdes, com seus valores no eixo y à esquerda. No gráfico de linha (ax2.plot
), a satisfação do cliente é representada por uma linha azul, com seus valores no eixo y à direita.
Essa combinação de diferentes tipos de gráficos em uma única figura permite que o público-alvo compreenda facilmente a relação entre as duas variáveis, fornecendo uma comparação visual direta em uma única vista.
Utilizando a interface orientada a objetos, você tem controle total sobre cada aspecto dos seus gráficos, permitindo-lhe criar visualizações precisas e de alto impacto para seus dados.
Explorar a fundo o Matplotlib abre um mundo de possibilidades em análise e apresentação de dados. Para iniciantes em Python e machine learning, desenvolver habilidades no uso desta biblioteca é um passo significativo no caminho para se tornarem cientistas de dados proficientes.
Não esqueça de consultar a documentação oficial do Matplotlib e buscar outros recursos como tutoriais e comunidades online para aprofundar seus conhecimentos.
Cada exemplo neste artigo é apenas o início de sua aventura com visualização de dados. Com prática e curiosidade, você logo estará criando gráficos dinâmicos e insights valiosos a partir dos seus conjuntos de dados. Boa sorte na sua jornada de aprendizado!