Matplotlib avançado

Dois eixos y com twinx

Plote duas medidas com unidades diferentes em um gráfico usando um segundo eixo y criado por ax.twinx.

Introdução

Chuva em milímetros e temperatura em graus não dividem a mesma escala: em um eixo só, uma delas parece plana. ax.twinx cria um segundo Axes que compartilha o eixo x mas tem o próprio eixo y à direita.

ax1 desenha as barras de chuva com o eixo y à esquerda. ax2 = ax1.twinx() compartilha os meses mas ganha um novo eixo y à direita para a temperatura. Colorir cada rótulo de eixo como seus dados mostra ao leitor qual eixo é de qual série. Use dois eixos com moderação: é fácil interpretar errado a comparação entre as séries.

Visualizador interativo

Desligue o segundo eixo y para ver por que ele ajuda: em uma escala só, a linha de temperatura fica achatada lá embaixo.

Exemplo de Matplotlib executável

Matplotlib
Executar código →
main.py
import matplotlib.pyplot as plt

months = ["Jan", "Feb", "Mar", "Apr", "May", "Jun", "Jul", "Aug", "Sep", "Oct", "Nov", "Dec"]
temperature = [3, 5, 9, 14, 18, 22, 25, 24, 20, 14, 8, 4]
rain = [60, 50, 55, 45, 60, 70, 80, 85, 60, 75, 80, 70]

fig, ax1 = plt.subplots(figsize=(7, 4))
ax1.bar(months, rain, color="tab:blue", alpha=0.4)
ax1.set_ylabel("Rain (mm)", color="tab:blue")

ax2 = ax1.twinx()
ax2.plot(months, temperature, color="tab:red", marker="o")
ax2.set_ylabel("Temperature (°C)", color="tab:red")
ax1.set_title("Climate in one chart")
plt.show()
Gerar um botão Run para este exemplo O gráfico que este código desenha
Dois eixos y com twinx