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 )

Matplotlib com dois eixos y

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

Add a Comment

O seu endereço de email não será publicado. Campos obrigatórios marcados com *