Gráfica de Superficie de Caja Tridimensional

Beginner

This tutorial is from open-source community. Access the source code

Introducción

Esta práctica te guiará a través de la creación de una gráfica de superficie de una caja 3D utilizando Python y Matplotlib. Definiremos las dimensiones, crearemos datos falsos y graficaremos superficies de contorno. Estableceremos los límites de la gráfica, graficaremos los bordes, estableceremos etiquetas y marcas de graduación en el eje z, estableceremos el zoom y la vista del ángulo y agregaremos una barra de colores.

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.

Define dimensiones

Define las dimensiones de la caja creando tres variables para la longitud de cada lado: Nx, Ny y Nz. Luego, crea tres mallas bidimensionales para X, Y y Z utilizando el método arange de numpy. Finalmente, establece un valor negativo para Z para crear una caja en lugar de un plano.

import matplotlib.pyplot as plt
import numpy as np

## Define dimensiones
Nx, Ny, Nz = 100, 300, 500
X, Y, Z = np.meshgrid(np.arange(Nx), np.arange(Ny), -np.arange(Nz))

Crea datos falsos

Crea datos falsos para graficar utilizando una fórmula para calcular los datos basados en los valores de X, Y y Z. Le agregaremos uno al resultado para asegurar que el valor mínimo sea mayor que cero.

## Crea datos falsos
data = (((X+100)**2 + (Y-20)**2 + 2*Z)/1000+1)

Grafica superficies de contorno

Grafica superficies de contorno para la caja utilizando el método contourf para cada superficie. Utiliza parámetros adecuados para zdir y offset.

kw = {
    'vmin': data.min(),
    'vmax': data.max(),
    'levels': np.linspace(data.min(), data.max(), 10),
}

## Crea una figura con un eje 3D
fig = plt.figure(figsize=(5, 4))
ax = fig.add_subplot(111, projection='3d')

## Grafica superficies de contorno
_ = ax.contourf(
    X[:, :, 0], Y[:, :, 0], data[:, :, 0],
    zdir='z', offset=0, **kw
)
_ = ax.contourf(
    X[0, :, :], data[0, :, :], Z[0, :, :],
    zdir='y', offset=0, **kw
)
C = ax.contourf(
    data[:, -1, :], Y[:, -1, :], Z[:, -1, :],
    zdir='x', offset=X.max(), **kw
)

Establece los límites de la gráfica

Establece los límites de la gráfica utilizando el método set y pasando los límites de las coordenadas X, Y y Z.

## Establece los límites de la gráfica a partir de los límites de las coordenadas
xmin, xmax = X.min(), X.max()
ymin, ymax = Y.min(), Y.max()
zmin, zmax = Z.min(), Z.max()
ax.set(xlim=[xmin, xmax], ylim=[ymin, ymax], zlim=[zmin, zmax])

Grafica los bordes

Grafica los bordes utilizando el método plot. Grafica tres líneas a lo largo de las coordenadas X e Y, y una línea a lo largo de las coordenadas X y Z.

## Grafica los bordes
edges_kw = dict(color='0.4', linewidth=1, zorder=1e3)
ax.plot([xmax, xmax], [ymin, ymax], 0, **edges_kw)
ax.plot([xmin, xmax], [ymin, ymin], 0, **edges_kw)
ax.plot([xmax, xmax], [ymin, ymin], [zmin, zmax], **edges_kw)

Establece etiquetas y marcas de z

Establece etiquetas y marcas de z utilizando el método set. Estableceremos las etiquetas para las coordenadas X, Y y Z, y estableceremos las marcas de z para mostrar la profundidad de la caja.

## Establece etiquetas y marcas de z
ax.set(
    xlabel='X [km]',
    ylabel='Y [km]',
    zlabel='Z [m]',
    zticks=[0, -150, -300, -450],
)

Establece el zoom y la vista del ángulo

Establece el zoom y la vista del ángulo utilizando los métodos view_init y set_box_aspect. Estableceremos la vista del ángulo a 40 grados en la dirección X y -30 grados en la dirección Y, y el zoom a 0.9.

## Establece el zoom y la vista del ángulo
ax.view_init(40, -30, 0)
ax.set_box_aspect(None, zoom=0.9)

Agrega una barra de colores

Agrega una barra de colores utilizando el método colorbar. Estableceremos los parámetros fraction y pad para ajustar la ubicación de la barra de colores, y estableceremos la etiqueta para mostrar el nombre y las unidades de los datos.

## Colorbar
fig.colorbar(C, ax=ax, fraction=0.02, pad=0.1, label='Nombre [unidades]')

Resumen

En este laboratorio, creamos una gráfica de superficie de una caja tridimensional utilizando Python y Matplotlib. Definimos las dimensiones, creamos datos falsos y graficamos superficies de contorno. Establecimos los límites de la gráfica, graficamos los bordes, establecimos etiquetas y marcas de z, establecimos el zoom y la vista del ángulo, y agregamos una barra de colores. Esta gráfica se puede utilizar para visualizar datos tridimensionales y explorar las relaciones entre variables.