Crear gráficos de voxeles 3D en 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 crear un gráfico de voxeles 3D utilizando coordenadas cilíndricas en Matplotlib. El gráfico demostrará cómo utilizar los parámetros x, y y z de .Axes3D.voxels para crear un gráfico de voxeles 3D.

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 las 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

El primer paso es importar las bibliotecas necesarias para este laboratorio. Utilizaremos matplotlib.pyplot, numpy y matplotlib.colors.

import matplotlib.pyplot as plt
import numpy as np
import matplotlib.colors

Definir la función de puntos medios

A continuación, definimos una función midpoints para calcular los puntos medios de una matriz de coordenadas. Esta función se utilizará más adelante para calcular los puntos medios de r, theta y z.

def midpoints(x):
    sl = ()
    for i in range(x.ndim):
        x = (x[sl + np.index_exp[:-1]] + x[sl + np.index_exp[1:]]) / 2.0
        sl += np.index_exp[:]
    return x

Definir coordenadas y valores RGB

En este paso, definimos las coordenadas r, theta y z, y le asignamos valores RGB a cada una.

r, theta, z = np.mgrid[0:1:11j, 0:np.pi*2:25j, -0.5:0.5:11j]
x = r*np.cos(theta)
y = r*np.sin(theta)

rc, thetac, zc = midpoints(r), midpoints(theta), midpoints(z)

## define a wobbly torus about [0.7, *, 0]
sphere = (rc - 0.7)**2 + (zc + 0.2*np.cos(thetac*2))**2 < 0.2**2

## combine the color components
hsv = np.zeros(sphere.shape + (3,))
hsv[..., 0] = thetac / (np.pi*2)
hsv[..., 1] = rc
hsv[..., 2] = zc + 0.5
colors = matplotlib.colors.hsv_to_rgb(hsv)

Crear el gráfico de voxeles 3D

Ahora creamos el gráfico de voxeles 3D utilizando la función ax.voxels. Pasamos x, y, z y sphere como parámetros. También agregamos facecolors y edgecolors utilizando la matriz colors que definimos anteriormente.

ax = plt.figure().add_subplot(projection='3d')
ax.voxels(x, y, z, sphere,
          facecolors=colors,
          edgecolors=np.clip(2*colors - 0.5, 0, 1),  ## brighter
          linewidth=0.5)

Mostrar el gráfico

Finalmente, mostramos el gráfico utilizando la función plt.show().

plt.show()

Resumen

En este laboratorio, aprendiste cómo crear un gráfico de voxeles 3D utilizando coordenadas cilíndricas en Matplotlib. También aprendiste cómo definir coordenadas y valores RGB y cómo crear un gráfico de voxeles 3D utilizando la función ax.voxels.