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.