Introdução
Este laboratório irá guiá-lo através da criação de um gráfico de triangulação usando Matplotlib. Você aprenderá como criar um objeto Triangulation, usar um objeto TriFinder e configurar a interatividade para destacar o triângulo sob o cursor.
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ê.
Criar um Objeto de Triangulação
Primeiramente, precisamos criar um objeto Triangulation. Usaremos a classe Triangulation de matplotlib.tri. Neste exemplo, criaremos um objeto Triangulation com dados aleatórios.
import matplotlib.pyplot as plt
import numpy as np
from matplotlib.tri import Triangulation
## Generate random data
x = np.random.rand(10)
y = np.random.rand(10)
triang = Triangulation(x, y)
Criar um Objeto TriFinder
Para encontrar o triângulo sob o cursor, precisamos criar um objeto TriFinder. Podemos obter o objeto TriFinder padrão do objeto Triangulation usando o método get_trifinder().
trifinder = triang.get_trifinder()
Configurar o Gráfico
Agora, podemos configurar o gráfico. Usaremos plt.subplots() para criar um objeto de figura e eixo. Em seguida, usaremos ax.triplot() para plotar a triangulação.
fig, ax = plt.subplots()
ax.triplot(triang)
Destacar o Triângulo Sob o Cursor
Queremos destacar o triângulo sob o cursor à medida que o mouse é movido sobre o gráfico. Para fazer isso, criaremos um objeto Polygon que será atualizado com os vértices do triângulo sob o cursor. Usaremos ax.add_patch() para adicionar o polígono ao gráfico.
from matplotlib.patches import Polygon
polygon = Polygon([[0, 0], [0, 0], [0, 0]], facecolor='y')
ax.add_patch(polygon)
Também criaremos uma função update_polygon() que atualizará os vértices do polígono com os vértices do triângulo sob o cursor.
def update_polygon(tri):
if tri == -1:
points = [0, 0, 0]
else:
points = triang.triangles[tri]
xs = triang.x[points]
ys = triang.y[points]
polygon.set_xy(np.column_stack([xs, ys]))
Configurar a Interatividade
Precisamos configurar a interatividade para atualizar o triângulo sob o cursor. Usaremos o motion_notify_event para detectar quando o mouse é movido sobre o gráfico. Criaremos uma função on_mouse_move() que obterá o triângulo sob o cursor usando o objeto TriFinder, atualizará o polígono com os vértices do triângulo e atualizará o título do gráfico com o índice do triângulo.
def on_mouse_move(event):
if event.inaxes is None:
tri = -1
else:
tri = trifinder(event.xdata, event.ydata)
update_polygon(tri)
ax.set_title(f'Triangle {tri}')
event.canvas.draw()
fig.canvas.mpl_connect('motion_notify_event', on_mouse_move)
Mostrar o Gráfico
Finalmente, podemos mostrar o gráfico usando plt.show().
plt.show()
Resumo
Neste laboratório, aprendemos como criar um gráfico de triangulação usando Matplotlib. Usamos as classes Triangulation e TriFinder para criar uma triangulação e encontrar o triângulo sob o cursor. Também configuramos a interatividade para destacar o triângulo sob o cursor.