Um gráfico de linhas é uma visualização de dados relacionais que mostra como uma variável contínua muda quando outra muda. É um dos gráficos mais comuns, amplamente utilizado em finanças, vendas, marketing, saúde, ciências naturais e muito mais.
Neste tutorial, discutiremos como usar o Seaborn, uma biblioteca popular de visualização de dados em Python, para criar e personalizar gráficos de linha em Python.
Apresentando o conjunto de dados
Para ter algo em que praticar os gráficos de linhas de origem marinha, primeiro faremos o download de um conjunto de dados do Kaggle chamado Daily Exchange Rates per Euro 1999-2023. Em seguida, importaremos todos os pacotes necessários, leremos e limparemos o dataframe. Sem entrar em detalhes sobre o processo de limpeza, o código abaixo demonstra as etapas a serem executadas:
Currencies:['Australian dollar''Canadian dollar''US dollar']
Date Currency Euro rate
02023-01-27 Australian dollar 1.528912023-01-26 Australian dollar 1.530822023-01-25 Australian dollar 1.536032023-01-24 Australian dollar 1.547042023-01-23 Australian dollar 1.55292022-12-01/2023-01-27Tecnologia
O dataframe resultante contém taxas diárias (dias úteis) de euro para dólares australianos, canadenses e americanos para o período de 01.12.2022 a 27.01.2023, inclusive.
Agora, estamos prontos para mergulhar na criação e na personalização dos gráficos de linha de origem marinha do Python.
Noções básicas de plotagem da linha Seaborn
Para criar um gráfico de linhas no Seaborn, podemos usar uma das duas funções: lineplot() ou relplot(). Em geral, eles têm muitas funcionalidades em comum, além de nomes de parâmetros idênticos. A principal diferença é que relplot() nos permite criar gráficos de linhas com várias linhas em diferentes facetas. Em vez disso, o lineplot() permite trabalhar com intervalos de confiança e agregação de dados.
Neste tutorial, usaremos principalmente a função lineplot().
O gráfico acima mostra a dinâmica da taxa EUR-USD. Definimos as variáveis a serem plotadas nos eixos x e y (os parâmetros x e y ) e o dataframe (dados) de onde retiramos essas variáveis.
Para fins de comparação, para criar o mesmo gráfico usando relplot(), escreveríamos o seguinte:
Nesse caso, passamos mais um argumento específico para a função relplot(): kind='line'. Por padrão, essa função cria um gráfico de dispersão.
Personalização de um único gráfico de linha de origem marinha
Podemos personalizar o gráfico acima de várias maneiras para torná-lo mais legível e informativo. Por exemplo, podemos ajustar o tamanho da figura, adicionar rótulos de título e de eixo, ajustar o tamanho da fonte, personalizar a linha, adicionar e personalizar marcadores, etc. Vamos ver como implementar esses aprimoramentos no seaborn.
Ajuste do tamanho da figura
Como o Seaborn foi desenvolvido com base no matplotlib, podemos usar o matplotlib.pyplot para ajustar o tamanho da figura:
Para adicionar um título de gráfico e rótulos de eixo, podemos usar a função set() no objeto de gráfico de linha seaborn passando os argumentos title, xlabel e ylabel:
Observe que também adicionamos style='white' para evitar substituir o estilo inicial.
Alterar a cor, o estilo e o tamanho da linha
Para personalizar a linha do gráfico, podemos passar alguns parâmetros opcionais em comum com matplotlib.pyplot.plot, como cor, estilo de linha ou largura de linha:
Adicionar marcadores e personalizar sua cor, estilo e tamanho
É possível adicionar marcadores na linha e personalizar sua aparência. Além disso, nesse caso, podemos usar alguns parâmetros do matplotlib, como marker, markerfacecolor ou markersize:
A documentação nos fornece a lista definitiva dos parâmetros a serem usados para melhorar a estética de um gráfico de linha de origem marinha. Em particular, podemos ver todas as opções possíveis de marcadores.
Em nossa folha de dicas do Seaborn, você encontrará outras maneiras de personalizar um gráfico de linhas no Seaborn.
Gráficos de linhas Seaborn com várias linhas
Muitas vezes, precisamos explorar como diversas variáveis contínuas mudam dependendo de outra variável contínua. Para essa finalidade, podemos criar um gráfico de linha de fundo do mar com várias linhas. As funções lineplot() e relplot() também são aplicáveis a esses casos.
Criação de um gráfico de linhas de mar com várias linhas
Tecnicamente, é possível criar um gráfico de linhas com várias linhas apenas construindo um objeto de eixos separado para cada variável dependente, ou seja, cada linha:
Acima, extraímos mais dois subconjuntos do nosso dataframe inicial df - para dólares australianos e canadenses - e plotamos cada taxa do euro em relação ao tempo. No entanto, há soluções mais eficientes para isso: usar os parâmetros de matiz, estilo ou tamanho, disponíveis em lineplot() e relplot().
Usando o parâmetro de matiz
Esse parâmetro funciona da seguinte forma: atribuímos a ele o nome de uma coluna de dataframe que contém valores categóricos e, em seguida, o seaborn gera um gráfico de linhas para cada categoria, dando uma cor diferente a cada linha:
Com apenas uma linha de código simples, criamos um gráfico de linha de origem marinha para três categorias. Observe que passamos o dataframe inicial df em vez de seus subconjuntos para diferentes moedas.
Usando o parâmetro de estilo
O parâmetro style funciona da mesma forma que o hue, mas distingue as categorias usando diferentes estilos de linha (sólida, tracejada, pontilhada etc.), sem afetar a cor:
Assim como a tonalidade e o estilo, o parâmetro de tamanho cria uma linha separada para cada categoria. Isso não afeta a cor e o estilo das linhas, mas faz com que cada uma delas tenha uma largura diferente:
Personalização de um gráfico de linhas de origem marinha com várias linhas
Vamos agora experimentar a estética do nosso gráfico. Algumas técnicas aqui são idênticas às que aplicamos a um único gráfico de linha de Seaborn. Os outros são específicos apenas para gráficos de linhas com várias linhas.
Ajustes gerais
Podemos ajustar o tamanho da figura, adicionar um título e rótulos de eixo e alterar o tamanho da fonte do gráfico acima da mesma forma que fizemos para um gráfico de linha única:
fig = plt.subplots(figsize=(20,5))
sns.lineplot(x='Date', y='Euro rate', data=df, hue='Currency').set(title='Euro rates for different currencies', xlabel='Date', ylabel='Rate')
sns.set_theme(style='white', font_scale=3)Tecnologia
Saída:
Alterar a cor, o estilo e o tamanho de cada linha
Anteriormente, vimos que, quando os parâmetros de matiz, estilo ou tamanho são usados, o seaborn fornece um conjunto padrão de cores/estilos/tamanhos para um gráfico de linhas com várias linhas. Se necessário, podemos substituir esses padrões e selecionar cores/estilos/tamanhos por nós mesmos.
Quando usamos o parâmetro hue, também podemos passar o argumento palette como uma lista ou tupla de nomes de cores do matplotlib:
fig = plt.subplots(figsize=(20,5))
sns.lineplot(x='Date', y='Euro rate', data=df, hue='Currency', palette=['magenta','deepskyblue','yellowgreen']).set(title='Euro rates for different currencies', xlabel='Date', ylabel='Rate')
sns.set_theme(style='white', font_scale=3)Tecnologia
Saída:
Também é possível aplicar diretamente uma paleta matplotlib existente:
fig = plt.subplots(figsize=(20,5))
sns.lineplot(x='Date', y='Euro rate', data=df, hue='Currency', palette='spring').set(title='Euro rates for different currencies', xlabel='Date', ylabel='Rate')
sns.set_theme(style='white', font_scale=3)Tecnologia
Saída:
Ao mesmo tempo, ao usar o hue, ainda podemos ajustar o estilo e a largura da linha de todas as linhas passando os argumentos linestyle e linewidth:
fig = plt.subplots(figsize=(20,5))
sns.lineplot(x='Date', y='Euro rate', data=df, hue='Currency', palette=['magenta','deepskyblue','yellowgreen'], linestyle='dashed', linewidth=5).set(title='Euro rates for different currencies', xlabel='Date', ylabel='Rate')
sns.set_theme(style='white', font_scale=3)Tecnologia
Saída:
Em vez disso, quando criamos um gráfico de linhas com várias linhas usando o parâmetro style, podemos atribuir uma lista (ou uma tupla) de listas (ou tuplas) a um parâmetro chamado dashes:
fig = plt.subplots(figsize=(20,5))
sns.lineplot(x='Date', y='Euro rate', data=df, style='Currency', dashes=[[4,4],[6,1],[3,9]]).set(title='Euro rates for different currencies', xlabel='Date', ylabel='Rate')
sns.set_theme(style='white', font_scale=3)Tecnologia
Saída:
Na lista acima de listas atribuídas a traços, o primeiro item de cada sublista representa o comprimento de um segmento da linha correspondente, enquanto o segundo item representa o comprimento de um espaço.
Observação: para representar uma linha sólida, precisamos definir o comprimento de um intervalo como zero, por exemplo: [1, 0].
Para ajustar a cor e a largura de todas as linhas desse gráfico, fornecemos os argumentos color e linewidth, da mesma forma que fizemos ao personalizar um único gráfico de linha de origem marinha:
fig = plt.subplots(figsize=(20,5))
sns.lineplot(x='Date', y='Euro rate', data=df, style='Currency', dashes=[[4,4],[6,1],[3,9]], color='darkviolet', linewidth=4).set(title='Euro rates for different currencies', xlabel='Date', ylabel='Rate')
sns.set_theme(style='white', font_scale=3)Tecnologia
Saída:
Por fim, quando usamos o parâmetro size para criar um gráfico de linhas múltiplas de seaborn, podemos regular a largura de cada linha por meio do parâmetro sizes. Ele recebe uma lista (ou uma tupla) de números inteiros:
fig = plt.subplots(figsize=(20,5))
sns.lineplot(x='Date', y='Euro rate', data=df, size='Currency', sizes=[2,10,5]).set(title='Euro rates for different currencies', xlabel='Date', ylabel='Rate')
sns.set_theme(style='white', font_scale=3)Tecnologia
Saída:
Para personalizar a cor e o estilo de todas as linhas desse gráfico, precisamos fornecer os argumentos linestyle e color:
fig = plt.subplots(figsize=(20,5))
sns.lineplot(x='Date', y='Euro rate', data=df, size='Currency', sizes=[2,10,5], linestyle='dotted', color='teal').set(title='Euro rates for different currencies', xlabel='Date', ylabel='Rate')
sns.set_theme(style='white', font_scale=3)Tecnologia
Saída:
Adicionar marcadores e personalizar sua cor, estilo e tamanho
Talvez queiramos adicionar marcadores em nosso gráfico de linhas múltiplas de origem marinha.
Para adicionar marcadores da mesma cor, estilo e tamanho em todas as linhas, precisamos usar os parâmetros do matplotlib, como marker, markerfacecolor, markersize etc., da mesma forma que fizemos para um gráfico de linha única:
fig = plt.subplots(figsize=(20,5))
sns.lineplot(x='Date', y='Euro rate', data=df, hue='Currency', marker='o', markerfacecolor='orangered', markersize=10).set(title='Euro rates for different currencies', xlabel='Date', ylabel='Rate')
sns.set_theme(style='white', font_scale=3)Tecnologia
Saída:
As coisas são diferentes, porém, quando queremos marcadores diferentes para cada linha. Nesse caso, precisamos usar o parâmetro markers, que, no entanto, de acordo com as funcionalidades do seaborn, só funciona quando o parâmetro style é especificado:
fig = plt.subplots(figsize=(20,5))
sns.lineplot(x='Date', y='Euro rate', data=df, style='Currency', markers=['o','X','*'], markerfacecolor='brown', markersize=10).set(title='Euro rates for different currencies', xlabel='Date', ylabel='Rate')
sns.set_theme(style='white', font_scale=3)Tecnologia
Saída:
No gráfico acima, podemos tornar todas as linhas sólidas fornecendo o argumento dos traços e definindo o padrão de estilo [1, 0] para cada linha:
fig = plt.subplots(figsize=(20,5))
sns.lineplot(x='Date', y='Euro rate', data=df, style='Currency', markers=['o','X','*'], dashes=[[1,0],[1,0],[1,0]], markerfacecolor='brown', markersize=10).set(title='Euro rates for different currencies', xlabel='Date', ylabel='Rate')
sns.set_theme(style='white', font_scale=3)Tecnologia
Saída:
Conclusão
Recapitulando, neste tutorial, aprendemos várias maneiras de criar e personalizar um gráfico de linhas do Seaborn com uma ou várias linhas.
Como um caminho a seguir, com o seaborn, podemos fazer muito mais para ajustar ainda mais um gráfico de linha. Por exemplo, podemos:
Agrupar linhas por mais de uma variável categórica
Personalizar a legenda
Criar gráficos de linhas com várias linhas em diferentes facetas
Exibir e personalizar o intervalo de confiança
Personalizar os ticks do eixo temporal e seus rótulos para um gráfico de linha de série temporal
Perguntas frequentes sobre o enredo da linha Seaborn
O que é um gráfico de linha na Seaborn?⌄
Um gráfico de linhas é um tipo de gráfico no Seaborn que mostra a relação entre duas variáveis, conectando os pontos de dados com uma linha reta.
Que tipo de dados é mais adequado para um gráfico de linhas no Seaborn?⌄
Os gráficos de linhas são mais adequados para dados em que há uma relação clara entre duas variáveis e em que as variáveis são contínuas ou ordinais.
Posso traçar várias linhas no mesmo gráfico no Seaborn?⌄
Sim, você pode plotar várias linhas no mesmo gráfico no Seaborn usando o parâmetro hue para especificar uma variável categórica para agrupar os dados.
Qual é a diferença entre um gráfico de linhas e um gráfico de dispersão no Seaborn?⌄
Um gráfico de linhas no Seaborn mostra a relação entre duas variáveis com uma linha reta, enquanto um gráfico de dispersão mostra a relação com pontos de dados individuais.
Posso adicionar uma linha de regressão ao meu gráfico de linhas no Seaborn?⌄
Sim, você pode adicionar uma linha de regressão ao seu gráfico de linhas no Seaborn usando a função regplot(), que ajusta e plota um modelo de regressão linear entre duas variáveis.
Como faço para salvar meu gráfico de linhas do Seaborn em um arquivo?⌄
Você pode salvar o gráfico de linhas do Seaborn em um arquivo usando a função savefig() da biblioteca matplotlib, que salva a figura atual em um caminho e formato de arquivo especificados.
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.
Este tutorial prático se aprofunda na criação e na personalização de gráficos de linhas com o Matplotlib, uma biblioteca avançada de visualização de dados em Python.
Explore vários tipos de gráficos de dados, desde os mais comuns até os avançados e não convencionais, o que eles mostram, quando usá-los, quando evitá-los e como criá-los e personalizá-los em Python.
Um gráfico de linhas é uma visualização de dados relacionais que mostra como uma variável contínua muda quando outra muda. É um dos gráficos mais comuns, amplamente utilizado em finanças, vendas, marketing, saúde, ciências naturais e muito mais.
Neste tutorial, discutiremos como usar o Seaborn, uma biblioteca popular de visualização de dados em Python, para criar e personalizar gráficos de linha em Python.
Apresentando o conjunto de dados
Para ter algo em que praticar os gráficos de linhas de origem marinha, primeiro faremos o download de um conjunto de dados do Kaggle chamado Daily Exchange Rates per Euro 1999-2023. Em seguida, importaremos todos os pacotes necessários, leremos e limparemos o dataframe. Sem entrar em detalhes sobre o processo de limpeza, o código abaixo demonstra as etapas a serem executadas:
Saída:
O dataframe resultante contém taxas diárias (dias úteis) de euro para dólares australianos, canadenses e americanos para o período de 01.12.2022 a 27.01.2023, inclusive.
Agora, estamos prontos para mergulhar na criação e na personalização dos gráficos de linha de origem marinha do Python.
Noções básicas de plotagem da linha Seaborn
Para criar um gráfico de linhas no Seaborn, podemos usar uma das duas funções:
lineplot()ourelplot(). Em geral, eles têm muitas funcionalidades em comum, além de nomes de parâmetros idênticos. A principal diferença é que relplot() nos permite criar gráficos de linhas com várias linhas em diferentes facetas. Em vez disso, o lineplot() permite trabalhar com intervalos de confiança e agregação de dados.Neste tutorial, usaremos principalmente a função lineplot().
O curso Introduction to Data Visualization with Seaborn o ajudará a aprender e praticar as principais funções e métodos da biblioteca seaborn. Você também pode conferir nosso tutorial do Seaborn para iniciantes para se familiarizar mais com a popular biblioteca Python.
Criação de um único gráfico de linha de origem marinha
Podemos criar um gráfico de linhas mostrando as relações entre duas variáveis contínuas da seguinte forma:
Saída:
O gráfico acima mostra a dinâmica da taxa EUR-USD. Definimos as variáveis a serem plotadas nos eixos x e y (os parâmetros x e y ) e o dataframe (dados) de onde retiramos essas variáveis.
Para fins de comparação, para criar o mesmo gráfico usando relplot(), escreveríamos o seguinte:
Saída:
Nesse caso, passamos mais um argumento específico para a função relplot(): kind='line'. Por padrão, essa função cria um gráfico de dispersão.
Personalização de um único gráfico de linha de origem marinha
Podemos personalizar o gráfico acima de várias maneiras para torná-lo mais legível e informativo. Por exemplo, podemos ajustar o tamanho da figura, adicionar rótulos de título e de eixo, ajustar o tamanho da fonte, personalizar a linha, adicionar e personalizar marcadores, etc. Vamos ver como implementar esses aprimoramentos no seaborn.
Ajuste do tamanho da figura
Como o Seaborn foi desenvolvido com base no matplotlib, podemos usar o matplotlib.pyplot para ajustar o tamanho da figura:
Saída:
Em vez disso, com relplot(), podemos usar os parâmetros de altura e aspecto (a proporção entre largura e altura) para a mesma finalidade:
Saída:
Adição de um título e rótulos de eixo
Para adicionar um título de gráfico e rótulos de eixo, podemos usar a função set() no objeto de gráfico de linha seaborn passando os argumentos title, xlabel e ylabel:
Saída:
Ajuste do tamanho da fonte
Uma maneira conveniente de ajustar o tamanho da fonte é usar a função set_theme() e experimentar diferentes valores do parâmetro font_scale:
Saída:
Observe que também adicionamos style='white' para evitar substituir o estilo inicial.
Alterar a cor, o estilo e o tamanho da linha
Para personalizar a linha do gráfico, podemos passar alguns parâmetros opcionais em comum com matplotlib.pyplot.plot, como cor, estilo de linha ou largura de linha:
Saída:
Adicionar marcadores e personalizar sua cor, estilo e tamanho
É possível adicionar marcadores na linha e personalizar sua aparência. Além disso, nesse caso, podemos usar alguns parâmetros do matplotlib, como marker, markerfacecolor ou markersize:
Saída:
A documentação nos fornece a lista definitiva dos parâmetros a serem usados para melhorar a estética de um gráfico de linha de origem marinha. Em particular, podemos ver todas as opções possíveis de marcadores.
Em nossa folha de dicas do Seaborn, você encontrará outras maneiras de personalizar um gráfico de linhas no Seaborn.
Gráficos de linhas Seaborn com várias linhas
Muitas vezes, precisamos explorar como diversas variáveis contínuas mudam dependendo de outra variável contínua. Para essa finalidade, podemos criar um gráfico de linha de fundo do mar com várias linhas. As funções lineplot() e relplot() também são aplicáveis a esses casos.
Criação de um gráfico de linhas de mar com várias linhas
Tecnicamente, é possível criar um gráfico de linhas com várias linhas apenas construindo um objeto de eixos separado para cada variável dependente, ou seja, cada linha:
Saída:
Acima, extraímos mais dois subconjuntos do nosso dataframe inicial df - para dólares australianos e canadenses - e plotamos cada taxa do euro em relação ao tempo. No entanto, há soluções mais eficientes para isso: usar os parâmetros de matiz, estilo ou tamanho, disponíveis em lineplot() e relplot().
Usando o parâmetro de matiz
Esse parâmetro funciona da seguinte forma: atribuímos a ele o nome de uma coluna de dataframe que contém valores categóricos e, em seguida, o seaborn gera um gráfico de linhas para cada categoria, dando uma cor diferente a cada linha:
Saída:
Com apenas uma linha de código simples, criamos um gráfico de linha de origem marinha para três categorias. Observe que passamos o dataframe inicial df em vez de seus subconjuntos para diferentes moedas.
Usando o parâmetro de estilo
O parâmetro style funciona da mesma forma que o hue, mas distingue as categorias usando diferentes estilos de linha (sólida, tracejada, pontilhada etc.), sem afetar a cor:
Saída:
Usando o parâmetro de tamanho
Assim como a tonalidade e o estilo, o parâmetro de tamanho cria uma linha separada para cada categoria. Isso não afeta a cor e o estilo das linhas, mas faz com que cada uma delas tenha uma largura diferente:
Saída:
Personalização de um gráfico de linhas de origem marinha com várias linhas
Vamos agora experimentar a estética do nosso gráfico. Algumas técnicas aqui são idênticas às que aplicamos a um único gráfico de linha de Seaborn. Os outros são específicos apenas para gráficos de linhas com várias linhas.
Ajustes gerais
Podemos ajustar o tamanho da figura, adicionar um título e rótulos de eixo e alterar o tamanho da fonte do gráfico acima da mesma forma que fizemos para um gráfico de linha única:
Saída:
Alterar a cor, o estilo e o tamanho de cada linha
Anteriormente, vimos que, quando os parâmetros de matiz, estilo ou tamanho são usados, o seaborn fornece um conjunto padrão de cores/estilos/tamanhos para um gráfico de linhas com várias linhas. Se necessário, podemos substituir esses padrões e selecionar cores/estilos/tamanhos por nós mesmos.
Quando usamos o parâmetro hue, também podemos passar o argumento palette como uma lista ou tupla de nomes de cores do matplotlib:
Saída:
Também é possível aplicar diretamente uma paleta matplotlib existente:
Saída:
Ao mesmo tempo, ao usar o hue, ainda podemos ajustar o estilo e a largura da linha de todas as linhas passando os argumentos linestyle e linewidth:
Saída:
Em vez disso, quando criamos um gráfico de linhas com várias linhas usando o parâmetro style, podemos atribuir uma lista (ou uma tupla) de listas (ou tuplas) a um parâmetro chamado dashes:
Saída:
Na lista acima de listas atribuídas a traços, o primeiro item de cada sublista representa o comprimento de um segmento da linha correspondente, enquanto o segundo item representa o comprimento de um espaço.
Observação: para representar uma linha sólida, precisamos definir o comprimento de um intervalo como zero, por exemplo: [1, 0].
Para ajustar a cor e a largura de todas as linhas desse gráfico, fornecemos os argumentos color e linewidth, da mesma forma que fizemos ao personalizar um único gráfico de linha de origem marinha:
Saída:
Por fim, quando usamos o parâmetro size para criar um gráfico de linhas múltiplas de seaborn, podemos regular a largura de cada linha por meio do parâmetro sizes. Ele recebe uma lista (ou uma tupla) de números inteiros:
Saída:
Para personalizar a cor e o estilo de todas as linhas desse gráfico, precisamos fornecer os argumentos linestyle e color:
Saída:
Adicionar marcadores e personalizar sua cor, estilo e tamanho
Talvez queiramos adicionar marcadores em nosso gráfico de linhas múltiplas de origem marinha.
Para adicionar marcadores da mesma cor, estilo e tamanho em todas as linhas, precisamos usar os parâmetros do matplotlib, como marker, markerfacecolor, markersize etc., da mesma forma que fizemos para um gráfico de linha única:
Saída:
As coisas são diferentes, porém, quando queremos marcadores diferentes para cada linha. Nesse caso, precisamos usar o parâmetro markers, que, no entanto, de acordo com as funcionalidades do seaborn, só funciona quando o parâmetro style é especificado:
Saída:
No gráfico acima, podemos tornar todas as linhas sólidas fornecendo o argumento dos traços e definindo o padrão de estilo [1, 0] para cada linha:
Saída:
Conclusão
Recapitulando, neste tutorial, aprendemos várias maneiras de criar e personalizar um gráfico de linhas do Seaborn com uma ou várias linhas.
Como um caminho a seguir, com o seaborn, podemos fazer muito mais para ajustar ainda mais um gráfico de linha. Por exemplo, podemos:
Para se aprofundar no que e como pode ser feito com o seaborn, considere fazer nosso curso Intermediate Data Visualization with Seaborn.