Introdução
Neste laboratório, você aprenderá como usar Objetos Ancorados (Anchored Objects) em Matplotlib. Objetos Ancorados são usados para adicionar objetos auxiliares a um gráfico. Esses objetos podem ser usados para adicionar anotações, barras de escala e legendas a um gráfico.
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
O primeiro passo é importar as bibliotecas necessárias. Usaremos Matplotlib para este laboratório.
from matplotlib import pyplot as plt
from matplotlib.lines import Line2D
from matplotlib.offsetbox import (AnchoredOffsetbox, AuxTransformBox,
DrawingArea, TextArea, VPacker)
from matplotlib.patches import Circle, Ellipse
Criar uma Figura
O próximo passo é criar uma figura. Criaremos uma figura simples com um único subplot.
fig, ax = plt.subplots()
ax.set_aspect(1)
Adicionar Texto Ancorado
Neste passo, adicionaremos uma caixa de texto ancorada ao canto superior esquerdo da figura.
def draw_text(ax):
"""Draw a text-box anchored to the upper-left corner of the figure."""
box = AnchoredOffsetbox(child=TextArea("Figure 1a"),
loc="upper left", frameon=True)
box.patch.set_boxstyle("round,pad=0.,rounding_size=0.2")
ax.add_artist(box)
draw_text(ax)
Adicionar Círculos Ancorados
Neste passo, adicionaremos dois círculos ao gráfico usando Objetos Ancorados (Anchored Objects).
def draw_circles(ax):
"""Draw circles in axes coordinates."""
area = DrawingArea(width=40, height=20)
area.add_artist(Circle((10, 10), 10, fc="tab:blue"))
area.add_artist(Circle((30, 10), 5, fc="tab:red"))
box = AnchoredOffsetbox(
child=area, loc="upper right", pad=0, frameon=False)
ax.add_artist(box)
draw_circles(ax)
Adicionar Elipse Ancorada
Neste passo, adicionaremos uma elipse ao gráfico usando Objetos Ancorados (Anchored Objects).
def draw_ellipse(ax):
"""Draw an ellipse of width=0.1, height=0.15 in data coordinates."""
aux_tr_box = AuxTransformBox(ax.transData)
aux_tr_box.add_artist(Ellipse((0, 0), width=0.1, height=0.15))
box = AnchoredOffsetbox(child=aux_tr_box, loc="lower left", frameon=True)
ax.add_artist(box)
draw_ellipse(ax)
Adicionar Barra de Tamanho
Neste passo, adicionaremos uma barra de tamanho ao gráfico usando Objetos Ancorados (Anchored Objects).
def draw_sizebar(ax):
"""
Draw a horizontal bar with length of 0.1 in data coordinates,
with a fixed label center-aligned underneath.
"""
size = 0.1
text = r"1$^{\prime}$"
sizebar = AuxTransformBox(ax.transData)
sizebar.add_artist(Line2D([0, size], [0, 0], color="black"))
text = TextArea(text)
packer = VPacker(
children=[sizebar, text], align="center", sep=5) ## separation in points.
ax.add_artist(AnchoredOffsetbox(
child=packer, loc="lower center", frameon=False,
pad=0.1, borderpad=0.5)) ## paddings relative to the legend fontsize.
draw_sizebar(ax)
Exibir o Gráfico
O passo final é exibir o gráfico.
plt.show()
Resumo
Neste laboratório, você aprendeu como usar Objetos Ancorados (Anchored Objects) em Matplotlib. Você aprendeu como adicionar texto, círculos, elipses e barras de tamanho a um gráfico usando Objetos Ancorados. Objetos Ancorados são uma ferramenta poderosa que pode ser usada para adicionar anotações e legendas a um gráfico.