Introducción
Matplotlib es una popular biblioteca de visualización de datos en Python. Proporciona una amplia gama de funciones para crear diferentes tipos de gráficos y diagramas. Una de las características de Matplotlib es la capacidad de dibujar objetos planos en gráficos tridimensionales. Esta práctica te guiará a través del proceso de dibujar objetos planos en gráficos tridimensionales utilizando Matplotlib.
Consejos sobre la VM
Una vez finalizada la inicialización de la VM, haz 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 tengas que esperar unos segundos a que Jupyter Notebook termine de cargarse. La validación de las operaciones no se puede automatizar debido a las limitaciones de Jupyter Notebook.
Si tienes problemas durante el aprendizaje, no dudes en preguntar a Labby. Proporciona retroalimentación después de la sesión y resolveremos rápidamente el problema para ti.
Importar las bibliotecas necesarias
Comenzaremos importando las bibliotecas necesarias, que son Matplotlib, NumPy y mpl_toolkits.mplot3d.art3d.
import matplotlib.pyplot as plt
import numpy as np
import mpl_toolkits.mplot3d.art3d as art3d
Crear un gráfico tridimensional
Crearemos un gráfico tridimensional utilizando la función add_subplot de Matplotlib. El parámetro proyección se establece en '3d' para crear un gráfico tridimensional.
fig = plt.figure()
ax = fig.add_subplot(proyección='3d')
Dibujar un círculo en la pared
Dibujaremos un círculo en la pared 'x = 0' del gráfico tridimensional utilizando las funciones Circle y pathpatch_2d_to_3d de Matplotlib.
p = Circle((5, 5), 3)
ax.add_patch(p)
art3d.pathpatch_2d_to_3d(p, z=0, zdir="x")
Etiquetar los ejes
Etiquetaremos manualmente los ejes utilizando la función text3d. La función toma la posición del texto, el texto a mostrar, el eje que se considerará como la tercera dimensión y otros parámetros.
def text3d(ax, xyz, s, zdir="z", size=None, angle=0, usetex=False, **kwargs):
"""
Dibuja la cadena *s* en los ejes *ax*, con posición *xyz*, tamaño *size*,
y ángulo de rotación *angle*. *zdir* indica el eje que se considerará como
la tercera dimensión. *usetex* es un booleano que indica si la cadena
debe pasar por un subproceso de LaTeX o no. Cualquier otro argumento
de palabras clave adicional se pasa a `.transform_path`.
Nota: zdir afecta la interpretación de xyz.
"""
x, y, z = xyz
if zdir == "y":
xy1, z1 = (x, z), y
elif zdir == "x":
xy1, z1 = (y, z), x
else:
xy1, z1 = (x, y), z
text_path = TextPath((0, 0), s, size=size, usetex=usetex)
trans = Affine2D().rotate(angle).translate(xy1[0], xy1[1])
p1 = PathPatch(trans.transform_path(text_path), **kwargs)
ax.add_patch(p1)
art3d.pathpatch_2d_to_3d(p1, z=z1, zdir=zdir)
text3d(ax, (4, -2, 0), "Eje X", zdir="z", size=.5, usetex=False,
ec="none", fc="k")
text3d(ax, (12, 4, 0), "Eje Y", zdir="z", size=.5, usetex=False,
angle=np.pi / 2, ec="none", fc="k")
text3d(ax, (12, 10, 4), "Eje Z", zdir="y", size=.5, usetex=False,
angle=np.pi / 2, ec="none", fc="k")
Escribir una fórmula de LaTeX en el piso
Escribiremos una fórmula de LaTeX en el piso 'z = 0' del gráfico tridimensional utilizando la función text3d.
text3d(ax, (1, 5, 0),
r"$\displaystyle G_{\mu\nu} + \Lambda g_{\mu\nu} = "
r"\frac{8\pi G}{c^4} T_{\mu\nu} $",
zdir="z", size=1, usetex=True,
ec="none", fc="k")
Establecer límites y mostrar el gráfico
Estableceremos los límites de los ejes x, y y z utilizando las funciones set_xlim, set_ylim y set_zlim de Matplotlib. Finalmente, mostraremos el gráfico tridimensional utilizando la función show de Matplotlib.
ax.set_xlim(0, 10)
ax.set_ylim(0, 10)
ax.set_zlim(0, 10)
plt.show()
Resumen
En este laboratorio, aprendimos cómo dibujar objetos planos en gráficos tridimensionales utilizando Matplotlib. Creamos un gráfico tridimensional, dibujamos un círculo en la pared, etiquetamos los ejes, escribimos una fórmula de LaTeX en el piso y establecimos los límites de los ejes.