Rotación de texto en Matplotlib

PythonPythonBeginner
Practicar Ahora

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

💡 Este tutorial está traducido por IA desde la versión en inglés. Para ver la versión original, puedes hacer clic aquí

Introducción

En este laboratorio, aprenderá a rotar texto en Matplotlib utilizando el parámetro rotation_mode. El parámetro rotation_mode determina el orden de rotación y alineación del texto. Hay dos modos disponibles: predeterminado y anclaje.

Consejos sobre la VM

Una vez finalizada la inicialización de la VM, haga clic en la esquina superior izquierda para cambiar a la pestaña Cuaderno y acceder a Jupyter Notebook para practicar.

A veces, es posible que tenga que esperar unos segundos a que Jupyter Notebook termine de cargarse. La validación de operaciones no se puede automatizar debido a las limitaciones de Jupyter Notebook.

Si tiene problemas durante el aprendizaje, no dude en preguntar a Labby. Deje sus comentarios después de la sesión y lo resolveremos rápidamente para usted.

Importar las bibliotecas necesarias

Primero, necesitamos importar las bibliotecas necesarias. En este laboratorio, usaremos Matplotlib para crear los gráficos.

import matplotlib.pyplot as plt

Definir la función test_rotation_mode

Crearemos una función llamada test_rotation_mode que creará subtramas para probar los diferentes modos de rotación. Toma dos parámetros: fig y mode.

def test_rotation_mode(fig, mode):

Definir las listas de alineación horizontal y vertical

A continuación, definiremos las listas de alineación horizontal y vertical que se usarán para crear las subtramas. Crearemos tres elementos para cada lista: "left" (izquierda), "center" (centro) y "right" (derecha) para la alineación horizontal, y "top" (arriba), "center" (centro), "baseline" (línea base) y "bottom" (abajo) para la alineación vertical.

ha_list = ["left", "center", "right"]
va_list = ["top", "center", "baseline", "bottom"]

Crear las subtramas

Ahora, crearemos las subtramas utilizando la función subplots. Crearemos una cuadrícula de subtramas con la misma relación de aspecto y eliminaremos las marcas de los ejes x e y. También agregaremos una línea vertical y horizontal en el centro de cada subtrama para ayudar a visualizar la alineación.

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)

Agregar texto a las subtramas

Agregaremos texto a cada subtrama utilizando la función text. Usaremos los parámetros rotation (rotación), horizontalalignment (alineación horizontal), verticalalignment (alineación vertical) y rotation_mode (modo de rotación) para rotar y alinear el texto. También usaremos el parámetro bbox (caja delimitadora) para resaltar la caja delimitadora del 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

Resaltar la caja delimitadora del texto

Si el rotation_mode se establece en 'default', resaltaremos la caja delimitadora del texto utilizando un rectángulo. Usaremos la función get_window_extent para obtener la caja delimitadora y la transformaremos a coordenadas de datos utilizando el 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)

Crear las subfiguras y llamar a la función test_rotation_mode

Crearemos dos subfiguras y llamaremos a la función test_rotation_mode con los parámetros fig y 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()

Resumen

En este laboratorio, aprendimos cómo rotar texto en Matplotlib utilizando el parámetro rotation_mode. Creamos una función llamada test_rotation_mode que creó subtramas para probar los diferentes modos de rotación. Definimos las listas de alineación horizontal y vertical, creamos las subtramas, agregamos texto a las subtramas y resaltamos la caja delimitadora del texto. Finalmente, creamos las subfiguras y llamamos a la función test_rotation_mode.