Iluminación de relieve personalizada en una representación gráfica de superficie 3D

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

Esta práctica demuestra cómo utilizar la iluminación de relieve personalizada en una representación gráfica de superficie 3D utilizando Python Matplotlib. La iluminación de relieve es el uso de luz y sombras para mejorar la percepción de profundidad y relieve en una representación 3D. Al personalizar la iluminación de relieve, podemos crear una representación gráfica más atractiva visualmente y más informativa.

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.

Cargar y formatear datos

En este paso, cargaremos y formatearemos los datos para la representación gráfica de superficie 3D. Utilizaremos un conjunto de datos de muestra llamado "jacksboro_fault_dem.npz".

import matplotlib.pyplot as plt
import numpy as np
from matplotlib import cbook, cm
from matplotlib.colors import LightSource

## Cargar y formatear datos
dem = cbook.get_sample_data('jacksboro_fault_dem.npz')
z = dem['elevation']
nrows, ncols = z.shape
x = np.linspace(dem['xmin'], dem['xmax'], ncols)
y = np.linspace(dem['ymin'], dem['ymax'], nrows)
x, y = np.meshgrid(x, y)

region = np.s_[5:50, 5:50]
x, y, z = x[region], y[region], z[region]

Configurar la representación gráfica

En este paso, configuraremos la representación gráfica para la representación gráfica de superficie 3D. Utilizaremos un objeto LightSource para personalizar la iluminación de relieve.

## Configurar la representación gráfica
fig, ax = plt.subplots(subplot_kw=dict(projection='3d'))

ls = LightSource(270, 45)
## Para utilizar un modo de iluminación de relieve personalizado, anule la iluminación predeterminada y pase
## los colores rgb de la superficie iluminada calculados a partir de "shade".
rgb = ls.shade(z, cmap=cm.gist_earth, vert_exag=0.1, blend_mode='soft')
surf = ax.plot_surface(x, y, z, rstride=1, cstride=1, facecolors=rgb,
                       linewidth=0, antialiased=False, shade=False)

plt.show()

Personalizar la iluminación de relieve

En este paso, personalizaremos la iluminación de relieve anulando la iluminación predeterminada y pasando los colores RGB de la superficie iluminada calculados a partir de "shade".

## Configurar la representación gráfica
fig, ax = plt.subplots(subplot_kw=dict(projection='3d'))

ls = LightSource(270, 45)
## Para utilizar un modo de iluminación de relieve personalizado, anule la iluminación predeterminada y pase
## los colores rgb de la superficie iluminada calculados a partir de "shade".
rgb = ls.shade(z, cmap=cm.gist_earth, vert_exag=0.1, blend_mode='soft')
surf = ax.plot_surface(x, y, z, rstride=1, cstride=1, facecolors=rgb,
                       linewidth=0, antialiased=False, shade=False)

plt.show()

Revisar y revisar

Revise el código y realice cualquier revisión necesaria. Asegúrese de que el código sea preciso y bien comentado.

Resumen

En este laboratorio, aprendimos cómo utilizar la iluminación de relieve personalizada en una representación gráfica de superficie 3D utilizando Python Matplotlib. Al personalizar la iluminación de relieve, pudimos crear una representación gráfica más atractiva visualmente y más informativa.