Setas de Direção Ancoradas no Matplotlib

Beginner

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

Introdução

Neste laboratório, aprenderemos como criar setas direcionais ancoradas no Matplotlib. Setas direcionais ancoradas são setas que apontam em uma direção específica e são ancoradas a um gráfico. Essas setas são úteis para indicar direções ou orientações específicas em um gráfico. Aprenderemos como criar setas simples, bem como setas de alto contraste e rotacionadas.

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 as bibliotecas necessárias

Primeiramente, precisamos importar as bibliotecas necessárias, como Matplotlib, NumPy, o gerenciador de fontes do Matplotlib e AnchoredDirectionArrows de mpl_toolkits.axes_grid1. Usaremos essas bibliotecas para criar setas direcionais ancoradas.

import matplotlib.pyplot as plt
import numpy as np

import matplotlib.font_manager as fm
from mpl_toolkits.axes_grid1.anchored_artists import AnchoredDirectionArrows

Criar um gráfico

Em seguida, criaremos um gráfico simples usando NumPy. Este gráfico servirá como plano de fundo para as setas direcionais ancoradas.

## Fixing random state for reproducibility
np.random.seed(19680801)

fig, ax = plt.subplots()
ax.imshow(np.random.random((10, 10)))

Criar uma seta simples

Agora, criaremos uma seta direcional ancorada simples usando a classe AnchoredDirectionArrows. Esta seta indicará as direções X e Y no gráfico.

## Simple example
simple_arrow = AnchoredDirectionArrows(ax.transAxes, 'X', 'Y')
ax.add_artist(simple_arrow)

Criar uma seta de alto contraste

Em seguida, criaremos uma seta direcional ancorada de alto contraste. Esta seta terá um contorno branco e um preenchimento preto.

high_contrast_part_1 = AnchoredDirectionArrows(
                            ax.transAxes,
                            '111', r'11$\overline{2}$',
                            loc='upper right',
                            arrow_props={'ec': 'w', 'fc': 'none', 'alpha': 1,
                                         'lw': 2}
                            )
ax.add_artist(high_contrast_part_1)

high_contrast_part_2 = AnchoredDirectionArrows(
                            ax.transAxes,
                            '111', r'11$\overline{2}$',
                            loc='upper right',
                            arrow_props={'ec': 'none', 'fc': 'k'},
                            text_props={'ec': 'w', 'fc': 'k', 'lw': 0.4}
                            )
ax.add_artist(high_contrast_part_2)

Criar uma seta rotacionada

Nesta etapa, criaremos uma seta direcional ancorada rotacionada. Esta seta será rotacionada em 30 graus e terá uma fonte serifada.

fontprops = fm.FontProperties(family='serif')

rotated_arrow = AnchoredDirectionArrows(
                    ax.transAxes,
                    '30', '120',
                    loc='center',
                    color='w',
                    angle=30,
                    fontproperties=fontprops
                    )
ax.add_artist(rotated_arrow)

Alterar as direções das setas

Nesta etapa, criaremos três setas direcionais ancoradas que apontam em diferentes direções. Essas setas terão diferentes comprimentos e proporções (aspect ratios).

a1 = AnchoredDirectionArrows(
        ax.transAxes, 'A', 'B', loc='lower center',
        length=-0.15,
        sep_x=0.03, sep_y=0.03,
        color='r'
    )
ax.add_artist(a1)

a2 = AnchoredDirectionArrows(
        ax.transAxes, 'A', ' B', loc='lower left',
        aspect_ratio=-1,
        sep_x=0.01, sep_y=-0.02,
        color='orange'
        )
ax.add_artist(a2)


a3 = AnchoredDirectionArrows(
        ax.transAxes, ' A', 'B', loc='lower right',
        length=-0.15,
        aspect_ratio=-1,
        sep_y=-0.1, sep_x=0.04,
        color='cyan'
        )
ax.add_artist(a3)

Exibir o gráfico

Finalmente, exibiremos o gráfico com todas as setas direcionais ancoradas.

plt.show()

Resumo

Neste laboratório, aprendemos como criar setas direcionais ancoradas no Matplotlib. Criamos setas simples, bem como setas de alto contraste e rotacionadas. Também aprendemos como alterar as direções e as proporções (aspect ratios) das setas. As setas direcionais ancoradas são úteis para indicar direções ou orientações específicas em um gráfico.