Un gráfico de superficie es una representación de un conjunto de datos tridimensional. Describe una relación funcional entre dos variables independientes X y Z y una variable dependiente designada Y, en lugar de mostrar los puntos de datos individuales. Es una gráfica complementaria de la gráfica de contorno. Es similar al diagrama de estructura alámbrica, pero cada cara de la estructura alámbrica es un polígono relleno. Esto ayuda a crear la topología de la superficie que se está visualizando.
Creación de un gráfico de superficie 3D
El axes3d presente en el kit de herramientas mpl_toolkits.mplot3d de Matplotlib proporciona las funciones necesarias que se utilizan para crear gráficos de superficie 3D. Los gráficos de superficie se crean utilizando la función ax.plot_surface().
Sintaxis:
ax.plot_surface(X, Y, Z)
donde X e Y son una array 2D de puntos de x e y, mientras que Z es una array 2D de alturas. Algunos atributos más de la función ax.plot_surface() se enumeran a continuación:
Atributo | Descripción |
---|---|
X, Y, Z | Arrays 2D de valores de datos |
paso a paso | array de zancada de columna (tamaño de paso) |
paso rápido | array de zancadas de fila (tamaño de paso) |
cuenta | número de columnas a utilizar, el valor predeterminado es 50 |
contar | número de fila a utilizar, por defecto es 50 |
color | color de la superficie |
cmap | mapa de colores para la superficie |
norma | instancia para normalizar los valores del mapa de color |
vmín | valor mínimo del mapa |
vmax | valor máximo del mapa |
colores de cara | color de la cara de la superficie individual |
sombra | matiza el color de la cara |
Ejemplo: Vamos a crear una superficie 3D usando la función anterior
Python3
# Import libraries from mpl_toolkits import mplot3d import numpy as np import matplotlib.pyplot as plt # Creating dataset x = np.outer(np.linspace(-3, 3, 32), np.ones(32)) y = x.copy().T # transpose z = (np.sin(x **2) + np.cos(y **2) ) # Creating figure fig = plt.figure(figsize =(14, 9)) ax = plt.axes(projection ='3d') # Creating plot ax.plot_surface(x, y, z) # show plot plt.show()
Producción:
Gráfico de superficie de gradiente
El gráfico de superficie de gradiente es una combinación de un gráfico de superficie 3D con un gráfico de contorno 2D. En este gráfico, la superficie 3D se colorea como un gráfico de contorno 2D. Las partes que están en la parte alta de la superficie contienen un color diferente al de las partes que están en la parte baja de la superficie.
Sintaxis:
surf = ax.plot_surface(X, Y, Z, cmap=, linewidth=0, antialiased=False)
El atributo cmap= indica el color de la superficie. También se puede agregar una barra de color llamando a fig.colorbar. El siguiente código crea una gráfica de superficie degradada:
Ejemplo:
Python3
# Import libraries from mpl_toolkits import mplot3d import numpy as np import matplotlib.pyplot as plt # Creating dataset x = np.outer(np.linspace(-3, 3, 32), np.ones(32)) y = x.copy().T # transpose z = (np.sin(x **2) + np.cos(y **2) ) # Creating figure fig = plt.figure(figsize =(14, 9)) ax = plt.axes(projection ='3d') # Creating color map my_cmap = plt.get_cmap('hot') # Creating plot surf = ax.plot_surface(x, y, z, cmap = my_cmap, edgecolor ='none') fig.colorbar(surf, ax = ax, shrink = 0.5, aspect = 5) ax.set_title('Surface plot') # show plot plt.show()
Producción:
Parcela de superficie 3D con proyecciones de curvas de nivel 2D
Los gráficos de superficie 3D trazados con Matplotlib se pueden proyectar en superficies 2D. El siguiente código crea gráficos 3D y visualiza su proyección en un gráfico de contorno 2D:
Ejemplo:
Python3
# Import libraries from mpl_toolkits import mplot3d import numpy as np import matplotlib.pyplot as plt # Creating dataset x = np.outer(np.linspace(-3, 3, 32), np.ones(32)) y = x.copy().T # transpose z = (np.sin(x **2) + np.cos(y **2) ) # Creating figure fig = plt.figure(figsize =(14, 9)) ax = plt.axes(projection ='3d') # Creating color map my_cmap = plt.get_cmap('hot') # Creating plot surf = ax.plot_surface(x, y, z, rstride = 8, cstride = 8, alpha = 0.8, cmap = my_cmap) cset = ax.contourf(x, y, z, zdir ='z', offset = np.min(z), cmap = my_cmap) cset = ax.contourf(x, y, z, zdir ='x', offset =-5, cmap = my_cmap) cset = ax.contourf(x, y, z, zdir ='y', offset = 5, cmap = my_cmap) fig.colorbar(surf, ax = ax, shrink = 0.5, aspect = 5) # Adding labels ax.set_xlabel('X-axis') ax.set_xlim(-5, 5) ax.set_ylabel('Y-axis') ax.set_ylim(-5, 5) ax.set_zlabel('Z-axis') ax.set_zlim(np.min(z), np.max(z)) ax.set_title('3D surface having 2D contour plot projections') # show plot plt.show()
Producción:
Publicación traducida automáticamente
Artículo escrito por jeeteshgavande30 y traducido por Barcelona Geeks. The original can be accessed here. Licence: CCBY-SA