Introdução
Neste tutorial, você aprenderá como criar um gráfico com dois eixos y usando Matplotlib. O gráfico exibirá dois conjuntos de dados com diferentes unidades de medida em diferentes escalas. Este tipo de gráfico é comumente usado em pesquisa científica para visualizar relações entre variáveis que não são diretamente comparáveis.
Dicas para a 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 Bibliotecas
Primeiramente, precisamos importar as bibliotecas necessárias. Usaremos Matplotlib e seu módulo parasite_axes para criar o gráfico.
import matplotlib.pyplot as plt
import matplotlib.transforms as mtransforms
from mpl_toolkits.axes_grid1.parasite_axes import HostAxes
Definir Dados
Em seguida, precisamos definir os dados que serão plotados. Neste exemplo, temos um conjunto de observações com quatro variáveis: nome, movimento próprio angular (angular proper motion), erro do movimento próprio angular (angular proper motion error) e distância. Converteremos o movimento próprio angular em velocidade linear e o plotaremos em relação ao FWHM (full width at half maximum) das observações.
obs = [["01_S1", 3.88, 0.14, 1970, 63],
["01_S4", 5.6, 0.82, 1622, 150],
["02_S1", 2.4, 0.54, 1570, 40],
["03_S1", 4.1, 0.62, 2380, 170]]
## Fator de conversão do movimento próprio angular para velocidade linear
pm_to_kms = 1./206265.*2300*3.085e18/3.15e7/1.e5
Criar o Gráfico
Agora criaremos o gráfico usando as funções HostAxes e twin() do módulo parasite_axes. HostAxes é usado para criar o gráfico principal, e twin() é usado para criar o eixo y secundário.
fig = plt.figure()
## Criar objeto HostAxes
ax_kms = fig.add_subplot(axes_class=HostAxes, aspect=1)
## Criar eixo y secundário com coordenadas transformadas
aux_trans = mtransforms.Affine2D().scale(pm_to_kms, 1.)
ax_pm = ax_kms.twin(aux_trans)
## Plotar os dados
for n, ds, dse, w, we in obs:
time = ((2007 + (10. + 4/30.)/12) - 1988.5)
v = ds / time * pm_to_kms
ve = dse / time * pm_to_kms
ax_kms.errorbar([v], [w], xerr=[ve], yerr=[we], color="k")
## Definir os rótulos dos eixos
ax_kms.axis["bottom"].set_label("Velocidade linear a 2.3 kpc [km/s]")
ax_kms.axis["left"].set_label("FWHM [km/s]")
ax_pm.axis["top"].set_label(r"Movimento Próprio [$''$/yr]")
## Ocultar os rótulos dos ticks no eixo y secundário
ax_pm.axis["right"].major_ticklabels.set_visible(False)
## Definir os limites do gráfico
ax_kms.set_xlim(950, 3700)
ax_kms.set_ylim(950, 3100)
Exibir o Gráfico
Finalmente, exibiremos o gráfico usando a função plt.show().
plt.show()
Resumo
Neste tutorial, você aprendeu como criar um gráfico com dois eixos y usando Matplotlib. Você aprendeu como definir os dados, criar o gráfico e exibir o gráfico. Este tipo de gráfico é útil para visualizar relações entre variáveis que não são diretamente comparáveis.