Fundamentos de Visualización con 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 usar Matplotlib, una biblioteca de Python para crear visualizaciones, para crear una figura y anotar su anatomía. Aprenderá a crear una figura, trazar datos, establecer límites de eje, agregar etiquetas y títulos y anotar la figura con texto y marcadores.

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 su retroalimentación después de la sesión y lo resolveremos rápidamente para usted.

Importar bibliotecas y configurar datos

Primero, necesitamos importar las bibliotecas necesarias y configurar algunos datos para graficar. En este ejemplo, graficaremos tres ondas senoidales con un poco de ruido aleatorio agregado.

import matplotlib.pyplot as plt
import numpy as np

## Configurar datos
np.random.seed(19680801)

X = np.linspace(0.5, 3.5, 100)
Y1 = 3+np.cos(X)
Y2 = 1+np.cos(1+X/0.75)/2
Y3 = np.random.uniform(Y1, Y2, len(X))

Crear la figura y configurar los ejes

A continuación, crearemos una figura y configuraremos los ejes. Usaremos el método add_axes() para crear un nuevo conjunto de ejes dentro de la figura. También estableceremos límites para los ejes x e y y agregaremos líneas de cuadrícula.

## Crear figura y ejes
fig = plt.figure(figsize=(7.5, 7.5))
ax = fig.add_axes([0.2, 0.17, 0.68, 0.7], aspect=1)

## Establecer límites y líneas de cuadrícula
ax.set_xlim(0, 4)
ax.set_ylim(0, 4)
ax.grid(linestyle="--", linewidth=0.5, color='.25', zorder=-10)

Graficar los datos

Ahora graficaremos nuestros datos en los ejes que acabamos de crear. Usaremos el método plot() para graficar las tres ondas senoidales con diferentes colores y anchos de línea.

## Graficar datos
ax.plot(X, Y1, c='C0', lw=2.5, label="Blue signal", zorder=10)
ax.plot(X, Y2, c='C1', lw=2.5, label="Orange signal")
ax.plot(X[::3], Y3[::3], linewidth=0, markersize=9,
        marker='s', markerfacecolor='none', markeredgecolor='C4',
        markeredgewidth=2.5)

Agregar etiquetas y título

Ahora agregaremos etiquetas a los ejes x e y, y un título a la figura usando los métodos set_xlabel(), set_ylabel() y set_title().

## Agregar etiquetas y título
ax.set_xlabel("x Axis label", fontsize=14)
ax.set_ylabel("y Axis label", fontsize=14)
ax.set_title("Anatomy of a figure", fontsize=20, verticalalignment='bottom')

Agregar leyenda

Agregaremos una leyenda a la figura usando el método legend(). También especificaremos la ubicación y el tamaño de fuente de la leyenda.

## Agregar leyenda
ax.legend(loc="upper right", fontsize=14)

Anotar la figura

Finalmente, anotaremos la figura para mostrar los nombres de varios elementos de Matplotlib usando los métodos text() y Circle(). También usaremos el método withStroke() para agregar un contorno blanco al texto y a los marcadores para una mejor visibilidad.

## Anotar la figura
from matplotlib.patches import Circle
from matplotlib.patheffects import withStroke

royal_blue = [0, 20/256, 82/256]

def annotate(x, y, text, code):
    ## Marcador de círculo
    c = Circle((x, y), radio=0.15, clip_on=False, zorder=10, linewidth=2.5,
               edgecolor=royal_blue + [0.6], facecolor='none',
               path_effects=[withStroke(linewidth=7, foreground='white')])
    ax.add_artist(c)

    ## use path_effects como un fondo para los textos
    ## dibuja los path_effects y el texto coloreado por separado para que los
    ## path_effects no puedan recortar otros textos
    for path_effects in [[withStroke(linewidth=7, foreground='white')], []]:
        color = 'white' si path_effects else royal_blue
        ax.text(x, y-0.2, text, zorder=100,
                ha='center', va='top', weight='bold', color=color,
                style='italic', fontfamily='Courier New',
                path_effects=path_effects)

        color = 'white' si path_effects else 'black'
        ax.text(x, y-0.33, code, zorder=100,
                ha='center', va='top', weight='normal', color=color,
                fontfamily='monospace', fontsize='medium',
                path_effects=path_effects)

annotate(3.5, -0.13, "Etiqueta de submarcador", "ax.xaxis.set_minor_formatter")
annotate(-0.03, 1.0, "Marcador principal", "ax.yaxis.set_major_locator")
annotate(0.00, 3.75, "Submarcador", "ax.yaxis.set_minor_locator")
annotate(-0.15, 3.00, "Etiqueta de marcador principal", "ax.yaxis.set_major_formatter")
annotate(1.68, -0.39, "Etiqueta del eje x", "ax.set_xlabel")
annotate(-0.38, 1.67, "Etiqueta del eje y", "ax.set_ylabel")
annotate(1.52, 4.15, "Título", "ax.set_title")
annotate(1.75, 2.80, "Línea", "ax.plot")
annotate(2.25, 1.54, "Marcadores", "ax.scatter")
annotate(3.00, 3.00, "Cuadrícula", "ax.grid")
annotate(3.60, 3.58, "Leyenda", "ax.legend")
annotate(2.5, 0.55, "Ejes", "fig.subplots")
annotate(4, 4.5, "Figura", "plt.figure")
annotate(0.65, 0.01, "Eje x", "ax.xaxis")
annotate(0, 0.36, "Eje y", "ax.yaxis")
annotate(4.0, 0.7, "Espina", "ax.spines")

Nota: En el código original, los nombres de los atributos y métodos de Matplotlib se mantienen en inglés para una consistencia técnica. En la traducción, se han mantenido en inglés donde era necesario para evitar confusiones en el contexto de la programación. Además, se han corregido algunos términos en la traducción para que tengan un mejor sentido en español, como "submarcador" en lugar de "minor tick" y "marcador principal" en lugar de "major tick".

Resumen

En este laboratorio, aprendiste cómo usar Matplotlib para crear una figura y anotar su anatomía. Aprendiste cómo crear una figura, graficar datos, establecer límites de ejes, agregar etiquetas y títulos, y anotar la figura con texto y marcadores. Siguiendo los pasos de este laboratorio, ahora deberías tener una buena comprensión de cómo usar Matplotlib para crear y anotar figuras en Python.