Alterar a Direção do Eixo no Matplotlib

Beginner

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

Introdução

Neste laboratório, você aprenderá como alterar a direção do eixo em um gráfico Matplotlib usando o método set_axis_direction(). Este método permite que você altere a direção de um eixo para qualquer uma das quatro direções cardinais: superior (top), inferior (bottom), esquerda (left) ou direita (right).

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 às limitações do 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ê.

Importando Bibliotecas

Primeiramente, precisamos importar as bibliotecas necessárias para este laboratório. Usaremos numpy e matplotlib.

import matplotlib.pyplot as plt
import numpy as np

Configurando o Gráfico

Em seguida, definiremos uma função setup_axes() que configurará a projeção polar em uma caixa retangular. Esta função usa GridHelperCurveLinear para criar uma projeção polar com uma caixa retangular.

from matplotlib.projections import PolarAxes
from matplotlib.transforms import Affine2D
import mpl_toolkits.axisartist as axisartist
import mpl_toolkits.axisartist.angle_helper as angle_helper
import mpl_toolkits.axisartist.grid_finder as grid_finder
from mpl_toolkits.axisartist.grid_helper_curvelinear import \
    GridHelperCurveLinear

def setup_axes(fig, rect):
    """Projeção polar, mas em uma caixa retangular."""
    grid_helper = GridHelperCurveLinear(
        Affine2D().scale(np.pi/180., 1.) + PolarAxes.PolarTransform(),
        extreme_finder=angle_helper.ExtremeFinderCycle(
            20, 20,
            lon_cycle=360, lat_cycle=None,
            lon_minmax=None, lat_minmax=(0, np.inf),
        ),
        grid_locator1=angle_helper.LocatorDMS(12),
        grid_locator2=grid_finder.MaxNLocator(5),
        tick_formatter1=angle_helper.FormatterDMS(),
    )
    ax = fig.add_subplot(
        rect, axes_class=axisartist.Axes, grid_helper=grid_helper,
        aspect=1, xlim=(-5, 12), ylim=(-5, 10))
    ax.axis[:].toggle(ticklabels=False)
    ax.grid(color=".9")
    return ax

Adicionando Eixos Flutuantes

Definiremos duas funções que adicionarão eixos flutuantes ao nosso gráfico. A primeira função add_floating_axis1() adiciona um eixo flutuante ao gráfico com o rótulo theta = 30. A segunda função add_floating_axis2() adiciona um eixo flutuante ao gráfico com o rótulo r = 6.

def add_floating_axis1(ax):
    ax.axis["lat"] = axis = ax.new_floating_axis(0, 30)
    axis.label.set_text(r"$\theta = 30^{\circ}$")
    axis.label.set_visible(True)
    return axis

def add_floating_axis2(ax):
    ax.axis["lon"] = axis = ax.new_floating_axis(1, 6)
    axis.label.set_text(r"$r = 6$")
    axis.label.set_visible(True)
    return axis

Mudando a Direção do Eixo

Agora, criaremos um loop para configurar quatro gráficos diferentes com o eixo flutuante em cada uma das quatro direções cardinais. No loop, usaremos add_floating_axis1() e add_floating_axis2() para adicionar os eixos flutuantes, e set_axis_direction() para definir a direção do eixo.

fig = plt.figure(figsize=(8, 4), layout="constrained")

for i, d in enumerate(["bottom", "left", "top", "right"]):
    ax = setup_axes(fig, rect=241+i)
    axis = add_floating_axis1(ax)
    axis.set_axis_direction(d)
    ax.set(title=d)

for i, d in enumerate(["bottom", "left", "top", "right"]):
    ax = setup_axes(fig, rect=245+i)
    axis = add_floating_axis2(ax)
    axis.set_axis_direction(d)
    ax.set(title=d)

plt.show()

Visualizando o Gráfico

Finalmente, visualizaremos o gráfico. Podemos ver o mesmo gráfico com o eixo flutuante em cada uma das quatro direções cardinais.

Resumo

Neste laboratório, você aprendeu como mudar a direção do eixo em um gráfico Matplotlib usando o método set_axis_direction(). Ao usar este método, você pode facilmente mudar a direção de um eixo para qualquer uma das quatro direções cardinais: topo, inferior, esquerda ou direita.