Plotagem com Múltiplos Eixos Y com Matplotlib

Beginner

This tutorial is from open-source community. Access the source code

Introdução

Na visualização de dados, é frequentemente necessário plotar múltiplas variáveis com diferentes unidades de medida no mesmo gráfico. Um método comum para alcançar isso é usar múltiplos eixos y, onde cada eixo y corresponde a uma variável diferente. Neste laboratório, aprenderemos como criar um gráfico com múltiplos eixos y usando Matplotlib.

Dicas da VM

Após a inicialização da VM, clique no canto superior esquerdo para mudar para a aba Notebook e acessar o Jupyter Notebook para praticar.

Às vezes, pode ser necessário aguardar alguns segundos para que o Jupyter Notebook termine de carregar. A validação das operações não pode ser automatizada devido a limitações no Jupyter Notebook.

Se você enfrentar problemas durante o aprendizado, sinta-se à vontade para perguntar ao Labby. Forneça feedback após a sessão, e resolveremos o problema prontamente para você.

Importar as bibliotecas necessárias

Começamos importando as bibliotecas necessárias, Matplotlib e NumPy. Matplotlib é uma biblioteca de visualização de dados, e NumPy é uma biblioteca para computação numérica em Python.

import matplotlib.pyplot as plt
import numpy as np

Criar um objeto figura e eixos

Criamos um objeto figura e eixos, que representa um único gráfico em Matplotlib.

fig, ax = plt.subplots()

Adicionar um eixo y gêmeo

Adicionamos um eixo y gêmeo ao gráfico usando o método twinx. Isso criará um novo eixo y no lado direito do gráfico.

twin1 = ax.twinx()

Definir a posição do eixo y gêmeo

Definimos a posição do eixo y gêmeo usando o método set_position. Isso moverá o eixo y gêmeo para a direita do eixo y original.

twin1.spines.right.set_position(("axes", 1.2))

Adicionar dados ao gráfico

Adicionamos dados ao gráfico usando o método plot. Adicionamos três linhas ao gráfico, cada uma com um eixo y diferente.

p1, = ax.plot([0, 1, 2], [0, 1, 2], "C0", label="Density")
p2, = twin1.plot([0, 1, 2], [0, 3, 2], "C1", label="Temperature")
p3, = twin2.plot([0, 1, 2], [50, 30, 15], "C2", label="Velocity")

Definir os limites e rótulos para os eixos

Definimos os limites e rótulos para cada eixo y usando o método set. Também definimos a cor dos rótulos para corresponder à cor das linhas usando o método set_color.

ax.set(xlim=(0, 2), ylim=(0, 2), xlabel="Distance", ylabel="Density")
twin1.set(ylim=(0, 4), ylabel="Temperature")
twin2.set(ylim=(1, 65), ylabel="Velocity")

ax.yaxis.label.set_color(p1.get_color())
twin1.yaxis.label.set_color(p2.get_color())
twin2.yaxis.label.set_color(p3.get_color())

Definir as cores das marcas de escala (tick colors)

Definimos as cores das marcas de escala (tick colors) para cada eixo y para corresponder à cor dos rótulos.

ax.tick_params(axis='y', colors=p1.get_color())
twin1.tick_params(axis='y', colors=p2.get_color())
twin2.tick_params(axis='y', colors=p3.get_color())

Adicionar uma legenda ao gráfico

Adicionamos uma legenda ao gráfico usando o método legend. Passamos uma lista de objetos de linha como o parâmetro handles.

ax.legend(handles=[p1, p2, p3])

Exibir o gráfico

Exibimos o gráfico usando o método show.

plt.show()

Resumo

Neste laboratório, aprendemos como criar um gráfico com múltiplos eixos y usando Matplotlib. Criamos um objeto de figura e eixos, adicionamos um eixo y duplo (twin y-axis), definimos a posição do eixo y duplo, adicionamos dados ao gráfico, definimos os limites e rótulos para os eixos, definimos as cores das marcações (tick colors), adicionamos uma legenda ao gráfico e exibimos o gráfico. Essa técnica pode ser útil ao comparar variáveis com diferentes unidades de medida no mesmo gráfico.