Dibujar objetos planos en un gráfico tridimensional

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

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.