Planos principales de vista 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

En este tutorial, aprenderemos a generar una representación tridimensional "desplegada" con Matplotlib que muestre cada uno de los planos principales de vista tridimensional. También etiquetaremos los ángulos de elevación, azimuth y roll necesarios para cada vista. Esta imagen se puede imprimir y doblar para formar una caja en la que cada plano forma un lado de la caja.

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

Comenzamos importando las bibliotecas necesarias para este tutorial, que incluye Matplotlib.

import matplotlib.pyplot as plt

Definir una función para anotar los ejes

Definimos una función annotate_axes que usaremos más adelante para etiquetar cada uno de los planos principales de vista tridimensional con sus respectivos ángulos.

def annotate_axes(ax, text, fontsize=18):
    ax.text(x=0.5, y=0.5, z=0.5, s=text,
            va="center", ha="center", fontsize=fontsize, color="black")

Definir los planos principales de vista tridimensional y sus ángulos

Definimos los planos principales de vista tridimensional y sus correspondientes ángulos de elevación, azimuth y roll.

views = [('XY',   (90, -90, 0)),
         ('XZ',    (0, -90, 0)),
         ('YZ',    (0,   0, 0)),
         ('-XY', (-90,  90, 0)),
         ('-XZ',   (0,  90, 0)),
         ('-YZ',   (0, 180, 0))]

Definir el diseño del gráfico tridimensional

Definimos el diseño del gráfico tridimensional utilizando una lista de listas. El '.' en la lista representa un subgráfico vacío.

layout = [['XY',  '.',   'L',   '.'],
          ['XZ', 'YZ', '-XZ', '-YZ'],
          ['.',   '.', '-XY',   '.']]

Crear el gráfico tridimensional

Usamos subplot_mosaic para crear el gráfico tridimensional basado en el diseño definido en el paso 4.

fig, axd = plt.subplot_mosaic(layout, subplot_kw={'projection': '3d'},
                              figsize=(12, 8.5))

Establecer las propiedades de cada plano principal de vista tridimensional

Establecemos las propiedades de cada plano principal de vista tridimensional, incluyendo las etiquetas de los ejes x, y y z, el tipo de proyección y los ángulos de vista.

for plane, angles in views:
    axd[plane].set_xlabel('x')
    axd[plane].set_ylabel('y')
    axd[plane].set_zlabel('z')
    axd[plane].set_proj_type('ortho')
    axd[plane].view_init(elev=angles[0], azim=angles[1], roll=angles[2])
    axd[plane].set_box_aspect(None, zoom=1.25)

Etiquetar cada plano principal de vista tridimensional

Usamos la función annotate_axes definida en el paso 2 para etiquetar cada plano principal de vista tridimensional con sus respectivos ángulos.

for plane, angles in views:
    label = f'{plane}\n{angles}'
    annotate_axes(axd[plane], label, fontsize=14)

Personalizar las etiquetas de marcas de graduación y las etiquetas de eje para cada plano principal de vista tridimensional

Personalizamos las etiquetas de marcas de graduación y las etiquetas de eje para cada plano principal de vista tridimensional para eliminar cualquier etiqueta innecesaria.

for plane in ('XY', '-XY'):
    axd[plane].set_zticklabels([])
    axd[plane].set_zlabel('')
for plane in ('XZ', '-XZ'):
    axd[plane].set_yticklabels([])
    axd[plane].set_ylabel('')
for plane in ('YZ', '-YZ'):
    axd[plane].set_xticklabels([])
    axd[plane].set_xlabel('')

Agregar una etiqueta al subgráfico central

Agregamos una etiqueta al subgráfico central para indicar que este es un gráfico de los planos principales de vista tridimensional.

label = 'mplot3d primary view planes\n' + 'ax.view_init(elev, azim, roll)'
annotate_axes(axd['L'], label, fontsize=18)
axd['L'].set_axis_off()

Mostrar el gráfico tridimensional

Mostramos el gráfico tridimensional usando plt.show().

plt.show()

Resumen

En este tutorial, aprendimos cómo generar un gráfico tridimensional "desplegado" que muestra cada uno de los planos principales de vista tridimensional usando Matplotlib. También etiquetamos los ángulos de elevación, azimuth y roll requeridos para cada vista y personalizamos las etiquetas de marcas de graduación y las etiquetas de eje para cada plano principal de vista tridimensional. Esta imagen se puede imprimir y doblar para formar una caja donde cada plano forma un lado de la caja.