Triangulación de Matplotlib

Shiv Yadav 15 febrero 2024
Triangulación de Matplotlib

El kit de herramientas Matplotlib de Python es completo para crear visualizaciones estáticas, animadas e interactivas. Hace que las cosas difíciles sean posibles, como la producción de gráficos aptos para la publicación y la creación de gráficos interactivos con funciones de zoom, panorámica y actualización.

Triangulación de Matplotlib

Para trazar la triangulación, Matplotlib ofrece bibliotecas y funciones. Un polígono de superficie o plano se divide en varios triángulos de esta manera.

Por lo general, cada vértice de un triángulo es compartido por dos triángulos vecinos.

La capacidad de Python para trazar una superficie continua se habilita a través de la idea de triangulación. Los triángulos pueden tener coordenadas definidas por el usuario o tener la colección de puntos en un triángulo que sostiene el gráfico de superficie cubierto por la triangulación de Delaunay.

Esta publicación nos enseñará sobre la triangulación de Matplotlib. La función matplotlib.pyplot.triplot(), que como mínimo acepta dos argumentos (puntos de datos xey), es necesaria para trazar la triangulación.

Los puntos n y los triángulos ntri forman una cuadrícula triangular no estructurada.

Los triángulos pueden ser creados automáticamente usando una triangulación de Delaunay o por el usuario especificándolos (generar una malla de triángulos que cubre un objeto).

Vamos a crear un triángulo aleatorio:

Primero, debe importar las bibliotecas requeridas, como Matplotlib, NumPy, etc.

Importar biblioteca

Como estamos generando triángulos aleatorios, primero generemos datos aleatorios para los triángulos.

Para fines de demostración, se utiliza el siguiente código para crear una nube aleatoria de puntos:

Generar datos aleatorios

Nos aseguramos de que la triangulación sea genuina antes de generar los datos para el gráfico de triangulación de Matplotlib. No puede contener triángulos formados por puntos colineales, puntos idénticos o triángulos superpuestos.

Generar triángulo

En la función matplotlib.tri, los triángulos se generan utilizando la función triangulación(), que requiere al menos dos parámetros, puntos de datos x e y.

Podemos trazar la triangulación usando el método matplotlib.pyplot.triplot() en una figura.

Mostrar triángulos

Como la nube de puntos triangulada se produce aleatoriamente, observará una nueva triangulación cada vez que se ejecute el script.

Ejecutemos la triangulación de Matplotlib en espacios 3D. En esta sección, trazaremos la esfera utilizando la triangulación de Matplotlib.

Debemos parametrizar la esfera para dibujar una esfera usando triangulación. Debemos tomar el producto exterior de los dos vectores cos(a) y sin(b) en el eje x, sin(a) y sin(b) en el eje y, y cos() en el eje z (b).

En la columna a se da una lista de números equidistantes de 0 a , y en la columna b se da una lista de números equidistantes de 0 a π.

El siguiente código usa la triangulación de Matplotlib para trazar una esfera:

import numpy as np
from scipy.spatial import Delaunay
import matplotlib.pyplot as plt
from matplotlib import cm
from mpl_toolkits.mplot3d import Axes3D

ax = plt.figure().gca(projection="3d")


def triangulateSphere(ax, k=30, cmap=cm.magma):

    # domain parametrization
    U = np.linspace(0, 2 * np.pi, k)
    V = np.linspace(0, np.pi, k)
    [X, Y] = np.meshgrid(U, V)

    # sphere parametrization
    S1 = np.cos(X) * np.sin(Y)
    S2 = np.sin(X) * np.sin(Y)
    S3 = np.cos(Y)

    # triangulate the points in [0,2pi] x [0,pi]
    tri = Delaunay(np.array([X.flatten(), Y.flatten()]).T)

    # plot the sphere
    ax.plot_trisurf(
        S1.flatten(), S2.flatten(), S3.flatten(), triangles=tri.simplices, cmap=cmap
    )


triangulateSphere(ax)
plt.show()

Primero, importamos los módulos requeridos y configuramos el tamaño de la figura. Después de eso, ax = plt.figure().gca(projection='3d') cambia la figura de 2D a 3D.

El método numpy.linspace() produjo 30 números espaciados uniformemente para las listas U y V. La función numpy.meshgrid() acepta una matriz 1D que codifica las coordenadas de una cuadrícula como entrada y devuelve las matrices de coordenadas del vector de coordenadas.

Los vectores (cos(a) y sin(b)), (sin(a) y sin(b)), y (arreglo de unos y cos(b)) correspondientemente produjeron el enumera S1, S2 y S3.

El diagrama de esfera triangulada se muestra usando la función matplotlib.pyplot.show(). A medida que aumenta el parámetro k, se definen más puntos, lo que da como resultado triángulos más pequeños y una esfera más suave.

Ejecutar el código dará como resultado esto:

Gráfica de esfera usando triangulación Matplotlib

Autor: Shiv Yadav
Shiv Yadav avatar Shiv Yadav avatar

Shiv is a self-driven and passionate Machine learning Learner who is innovative in application design, development, testing, and deployment and provides program requirements into sustainable advanced technical solutions through JavaScript, Python, and other programs for continuous improvement of AI technologies.

LinkedIn