Introducción
En este laboratorio, aprenderemos a crear una cuadrícula personalizada de ejes con Matplotlib utilizando el módulo mpl_toolkits.axes_grid1. Crearemos dos ejemplos: uno con tamaños y rellenos de ejes fijos, y otro con tamaños de ejes escalables y rellenos fijos.
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 le resolveremos el problema inmediatamente.
Importando las bibliotecas necesarias
Comenzaremos importando las bibliotecas necesarias: matplotlib.pyplot para la visualización y mpl_toolkits.axes_grid1 para crear la cuadrícula personalizada de ejes.
import matplotlib.pyplot as plt
from mpl_toolkits.axes_grid1 import Divider, Size
Definiendo una función auxiliar
Definiremos una función auxiliar label_axes() que se utilizará para colocar una etiqueta en el centro de un eje y eliminar las marcas de los ejes.
def label_axes(ax, text):
"""Place a label at the center of an Axes, and remove the axis ticks."""
ax.text(.5,.5, text, transform=ax.transAxes,
horizontalalignment="center", verticalalignment="center")
ax.tick_params(bottom=False, labelbottom=False,
left=False, labelleft=False)
Creando una cuadrícula personalizada de ejes con tamaños y rellenos fijos
Crearemos una cuadrícula personalizada de ejes con tamaños y rellenos fijos. Utilizaremos la clase Divider para dividir el rectángulo de los ejes en una cuadrícula con los tamaños especificados por horiz * vert. Luego, agregaremos cuatro ejes a la figura utilizando el método add_axes() y especificaremos las posiciones de cada eje utilizando el método new_locator() de la clase Divider.
## Sizes are in inches.
horiz = [Size.Fixed(1.), Size.Fixed(.5), Size.Fixed(1.5), Size.Fixed(.5)]
vert = [Size.Fixed(1.5), Size.Fixed(.5), Size.Fixed(1.)]
rect = (0.1, 0.1, 0.8, 0.8)
fig = plt.figure(figsize=(6, 6))
fig.suptitle("Fixed axes sizes, fixed paddings")
div = Divider(fig, rect, horiz, vert, aspect=False)
## The rect parameter will actually be ignored and overridden by axes_locator.
ax1 = fig.add_axes(rect, axes_locator=div.new_locator(nx=0, ny=0))
label_axes(ax1, "nx=0, ny=0")
ax2 = fig.add_axes(rect, axes_locator=div.new_locator(nx=0, ny=2))
label_axes(ax2, "nx=0, ny=2")
ax3 = fig.add_axes(rect, axes_locator=div.new_locator(nx=2, ny=2))
label_axes(ax3, "nx=2, ny=2")
ax4 = fig.add_axes(rect, axes_locator=div.new_locator(nx=2, nx1=4, ny=0))
label_axes(ax4, "nx=2, nx1=4, ny=0")
plt.show()
Creando una cuadrícula personalizada de ejes con tamaños escalables y rellenos fijos
Crearemos otra cuadrícula personalizada de ejes con tamaños escalables y rellenos fijos. Utilizaremos la opción Size.Scaled() para especificar los tamaños de los ejes que se escalan con el tamaño de la figura. Los pasos restantes son similares al ejemplo anterior.
## Sizes are in inches.
horiz = [Size.Scaled(1.5), Size.Fixed(.5), Size.Scaled(1.), Size.Scaled(.5)]
vert = [Size.Scaled(1.), Size.Fixed(.5), Size.Scaled(1.5)]
rect = (0.1, 0.1, 0.8, 0.8)
fig = plt.figure(figsize=(6, 6))
fig.suptitle("Scalable axes sizes, fixed paddings")
div = Divider(fig, rect, horiz, vert, aspect=False)
## The rect parameter will actually be ignored and overridden by axes_locator.
ax1 = fig.add_axes(rect, axes_locator=div.new_locator(nx=0, ny=0))
label_axes(ax1, "nx=0, ny=0")
ax2 = fig.add_axes(rect, axes_locator=div.new_locator(nx=0, ny=2))
label_axes(ax2, "nx=0, ny=2")
ax3 = fig.add_axes(rect, axes_locator=div.new_locator(nx=2, ny=2))
label_axes(ax3, "nx=2, ny=2")
ax4 = fig.add_axes(rect, axes_locator=div.new_locator(nx=2, nx1=4, ny=0))
label_axes(ax4, "nx=2, nx1=4, ny=0")
plt.show()
Resumen
En este laboratorio, aprendimos cómo crear una cuadrícula personalizada de ejes con Matplotlib utilizando el módulo mpl_toolkits.axes_grid1. Creamos dos ejemplos: uno con tamaños y rellenos fijos de los ejes, y otro con tamaños escalables de los ejes y rellenos fijos. Utilizamos la clase Divider para dividir el rectángulo de los ejes en una cuadrícula con los tamaños especificados por horiz * vert y agregamos ejes a la figura utilizando el método add_axes() y el método new_locator() de la clase Divider.