Como criar um gráfico matplotlib com dois eixos y
A maneira mais fácil de criar um gráfico Matplotlib com dois eixos y é usar a função twinx() .
O exemplo a seguir mostra como usar esta função na prática.
Exemplo: Crie um gráfico Matplotlib com dois eixos Y
Vamos supor que temos os dois DataFrames panda a seguir:
import pandas as pd #createDataFrames df1 = pd. DataFrame ({' year ': [1, 2, 3, 4, 5, 6, 7, 8, 9, 10], ' sales ': [14, 16, 19, 22, 24, 25, 24, 24, 27, 30]}) df2 = pd. DataFrame ({' year ': [1, 2, 3, 4, 5, 6, 7, 8, 9, 10], ' leads ': [4, 4, 4, 5, 4, 5, 7, 8, 5, 3]})
Ambos os DataFrames compartilham a variável “ano” que varia de 1 a 10, mas o primeiro DataFrame exibe o total de vendas a cada ano, enquanto o segundo DataFrame exibe o total de leads a cada ano.
Podemos usar o código a seguir para criar um gráfico Matplotlib que exibe vendas e leads em um gráfico com dois eixos Y:
import matplotlib. pyplot as plt
#define colors to use
col1 = ' steelblue '
col2 = ' red '
#define subplots
fig,ax = plt. subplots ()
#add first line to plot
ax. plot (df1. year , df1. sales , color=col1)
#add x-axis label
ax. set_xlabel (' Year ', fontsize= 14 )
#add y-axis label
ax. set_ylabel (' Sales ', color=col1, fontsize= 16 )
#define second y-axis that shares x-axis with current plot
ax2 = ax. twinx ()
#add second line to plot
ax2. plot (df2. year , df2. leads , color=col2)
#add second y-axis label
ax2. set_ylabel (' Leads ', color=col2, fontsize= 16 )
O eixo y no lado esquerdo do gráfico mostra o total de vendas por ano e o eixo y no lado direito do gráfico mostra o total de leads por ano.
A linha azul no gráfico representa o total de vendas por ano e a linha vermelha representa o total de leads por ano.
Sinta-se à vontade para usar os argumentos marcador e largura da linha para alterar a aparência das linhas no gráfico:
import matplotlib. pyplot as plt
#define colors to use
col1 = ' steelblue '
col2 = ' red '
#define subplots
fig,ax = plt. subplots ()
#add first line to plot
ax. plot (df1. year , df1. sales , color=col1, marker=' o ', linewidth= 3 )
#add x-axis label
ax. set_xlabel (' Year ', fontsize= 14 )
#add y-axis label
ax. set_ylabel (' Sales ', color=col1, fontsize= 16 )
#define second y-axis that shares x-axis with current plot
ax2 = ax. twinx ()
#add second line to plot
ax2. plot (df2. year , df2. leads , color=col2, marker=' o ', linewidth= 3 )
#add second y-axis label
ax2. set_ylabel (' Leads ', color=col2, fontsize= 16 )
Observe que ambas as linhas agora são mais largas e contêm marcadores “o” para exibir pontos de dados individuais.
Recursos adicionais
Os tutoriais a seguir explicam como realizar outras operações comuns no Matplotlib:
Como ajustar a posição do rótulo do eixo no Matplotlib
Como definir intervalos de eixos no Matplotlib
Como definir valores do eixo X no Matplotlib