Introdução
Neste laboratório, você aprenderá como rotacionar texto no Matplotlib usando o parâmetro rotation_mode. O parâmetro rotation_mode determina a ordem de rotação e alinhamento do texto. Existem dois modos disponíveis: default e anchor.
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. Neste laboratório, usaremos o Matplotlib para criar os gráficos.
import matplotlib.pyplot as plt
Definir a função test_rotation_mode
Criaremos uma função chamada test_rotation_mode que criará subplots para testar os diferentes modos de rotação. Ela recebe dois parâmetros: fig e mode.
def test_rotation_mode(fig, mode):
Definir as listas de alinhamento horizontal e vertical
Em seguida, definiremos as listas de alinhamento horizontal e vertical que serão usadas para criar os subplots. Criaremos três elementos para cada lista: "left", "center" e "right" para alinhamento horizontal, e "top", "center", "baseline" e "bottom" para alinhamento vertical.
ha_list = ["left", "center", "right"]
va_list = ["top", "center", "baseline", "bottom"]
Criar os subplots
Agora, criaremos os subplots usando a função subplots. Criaremos uma grade de subplots com a mesma proporção (aspect ratio), e removeremos os ticks dos eixos x e y. Também adicionaremos uma linha vertical e horizontal no centro de cada subplot para ajudar a visualizar o alinhamento.
axs = fig.subplots(len(va_list), len(ha_list), sharex=True, sharey=True,
subplot_kw=dict(aspect=1),
gridspec_kw=dict(hspace=0, wspace=0))
for i, va in enumerate(va_list):
for j, ha in enumerate(ha_list):
ax = axs[i, j]
ax.set(xticks=[], yticks=[])
ax.axvline(0.5, color="skyblue", zorder=0)
ax.axhline(0.5, color="skyblue", zorder=0)
ax.plot(0.5, 0.5, color="C0", marker="o", zorder=1)
Adicionar texto aos subplots
Adicionaremos texto a cada subplot usando a função text. Usaremos os parâmetros rotation, horizontalalignment, verticalalignment e rotation_mode para rotacionar e alinhar o texto. Também usaremos o parâmetro bbox para destacar a caixa delimitadora (bounding box) do texto.
kw = (
{} if mode == "default" else
{"bbox": dict(boxstyle="square,pad=0.", ec="none", fc="C1", alpha=0.3)}
)
texts = {}
for i, va in enumerate(va_list):
for j, ha in enumerate(ha_list):
ax = axs[i, j]
tx = ax.text(0.5, 0.5, "Tpg",
size="x-large", rotation=40,
horizontalalignment=ha, verticalalignment=va,
rotation_mode=mode, **kw)
texts[ax] = tx
Destacar a caixa delimitadora (bounding box) do texto
Se o rotation_mode estiver definido como 'default', destacaremos a caixa delimitadora do texto usando um retângulo. Usaremos a função get_window_extent para obter a caixa delimitadora e transformá-la para as coordenadas de dados usando o atributo transData.
if mode == "default":
fig.canvas.draw()
for ax, text in texts.items():
bb = text.get_window_extent().transformed(ax.transData.inverted())
rect = plt.Rectangle((bb.x0, bb.y0), bb.width, bb.height,
facecolor="C1", alpha=0.3, zorder=2)
ax.add_patch(rect)
Criar as subfiguras e chamar a função test_rotation_mode
Criaremos duas subfiguras e chamaremos a função test_rotation_mode com os parâmetros fig e mode.
fig = plt.figure(figsize=(8, 5))
subfigs = fig.subfigures(1, 2)
test_rotation_mode(subfigs[0], "default")
test_rotation_mode(subfigs[1], "anchor")
plt.show()
Resumo
Neste laboratório, aprendemos como rotacionar texto no Matplotlib usando o parâmetro rotation_mode. Criamos uma função chamada test_rotation_mode que criou subplots para testar os diferentes modos de rotação. Definimos as listas de alinhamento horizontal e vertical, criamos os subplots, adicionamos texto aos subplots e destacamos a caixa delimitadora (bounding box) do texto. Finalmente, criamos as subfiguras e chamamos a função test_rotation_mode.