Elipse com Seta de Orientação em Matplotlib

Beginner

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

Introdução

Neste laboratório, você aprenderá como desenhar uma elipse com uma seta de orientação usando Matplotlib. Elipses são um tipo de forma comumente usado em visualização de dados para representar dados. Ao adicionar uma seta de orientação a uma elipse, você pode fornecer informações adicionais sobre a direção dos dados.

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 Matplotlib e Criar uma Figura e Eixo

Primeiramente, você precisa importar Matplotlib e criar uma figura e um eixo. A figura e o eixo são os contêineres para o seu gráfico.

import matplotlib.pyplot as plt

## Create a figure and axis
fig, ax = plt.subplots(subplot_kw={"aspect": "equal"})

Criar uma Elipse

Em seguida, você precisa criar uma elipse usando a classe Ellipse. Você pode especificar o centro da elipse, a largura e a altura da elipse e o ângulo de rotação.

from matplotlib.patches import Ellipse

ellipse = Ellipse(
    xy=(2, 4),
    width=30,
    height=20,
    angle=35,
    facecolor="none",
    edgecolor="b"
)
ax.add_patch(ellipse)

Adicionar uma Seta de Orientação

Você pode adicionar uma seta de orientação à elipse plotando um marcador no ponto final do eixo menor. Você pode usar o método get_co_vertices() para obter as coordenadas dos vértices da elipse. Em seguida, você pode usar a classe Affine2D() para rotacionar o marcador para corresponder ao ângulo da elipse.

from matplotlib.markers import MarkerStyle
from matplotlib.transforms import Affine2D

## Plot an arrow marker at the end point of minor axis
vertices = ellipse.get_co_vertices()
t = Affine2D().rotate_deg(ellipse.angle)
ax.plot(
    vertices[0][0],
    vertices[0][1],
    color="b",
    marker=MarkerStyle(">", "full", t),
    markersize=10
)

Inverter a Seta de Orientação

Se você deseja inverter a seta de orientação, pode mudar o tipo de marcador de > para <.

## To reverse the orientation arrow, switch the marker type from > to <.
ax.plot(
    vertices[0][0],
    vertices[0][1],
    color="b",
    marker=MarkerStyle("<", "full", t),
    markersize=10
)

Exibir o Gráfico

Finalmente, você pode exibir o gráfico usando o método show().

plt.show()

Resumo

Parabéns! Você aprendeu como desenhar uma elipse com uma seta de orientação usando Matplotlib. Essa técnica pode ser útil para visualizar dados que possuem uma direção.