Tengo una función z que acepta los parámetros xey y devuelve una salida z. Quiero trazar esto en 3d y establecer las escalas. ¿Cómo puedo hacer esto fácilmente? Pasé demasiado tiempo revisando la documentación y no veo una forma de hacerlo.Quiero usar matplotlib para hacer un trazado 3d dada una función z
Respuesta
El estilo de trazado depende de sus datos (es decir, si intenta trazar una curva 3d, o una superficie, o una dispersión ...), pero esto debería darle un ejemplo práctico para comenzar a jugar.
Básicamente, no pasa la función a la trama, primero crea un dominio de xs y ys, y luego calcula los zs a partir de eso. En mi ejemplo, acabo de utilizar una cuadrícula simple de puntos espaciados uniformemente en el plano x-y para el dominio.
import numpy as np
from mpl_toolkits.mplot3d import Axes3D
import matplotlib.pyplot as plt
import random
def fun(x, y):
return x + y
fig = plt.figure()
ax = fig.add_subplot(111, projection='3d')
n = 10
xs = [i for i in range(n) for _ in range(n)]
ys = range(n) * n
zs = [fun(x, y) for x,y in zip(xs,ys)]
ax.scatter(xs, ys, zs)
ax.set_xlabel('X Label')
ax.set_ylabel('Y Label')
ax.set_zlabel('Z Label')
plt.show()
Para superficies que es un poco diferente, se pasa en una rejilla para el dominio en matrices 2D. Aquí está un ejemplo de superficie lisa:
import numpy as np
from mpl_toolkits.mplot3d import Axes3D
import matplotlib.pyplot as plt
import random
def fun(x, y):
return x**2 + y
fig = plt.figure()
ax = fig.add_subplot(111, projection='3d')
x = y = np.arange(-3.0, 3.0, 0.05)
X, Y = np.meshgrid(x, y)
zs = np.array([fun(x,y) for x,y in zip(np.ravel(X), np.ravel(Y))])
Z = zs.reshape(X.shape)
ax.plot_surface(X, Y, Z)
ax.set_xlabel('X Label')
ax.set_ylabel('Y Label')
ax.set_zlabel('Z Label')
plt.show()
Por alguna razón, cuando cambio la función, el gráfico se mantiene prácticamente igual. ¿Hay alguna manera de hacer una superficie lisa? – WhatsInAName
OK, actualicé mi respuesta con una superficie parabólica inclinada. – wim
Para el último gráfico, ¿hay alguna manera de colorear la superficie de acuerdo con z? Decir, usando un cloropleth? –
- 1. Trazado de polígonos en 3D pitón-matplotlib
- 2. trazado de histograma 3d/gráfico de barras en python matplotlib
- 3. matplotlib color en trazado 3D de un conjunto de datos x, y, z sin usar el contorno
- 4. Matplotlib trazado de datos no uniformes en la superficie 3D
- 5. MATLAB: Necesito hacer un trazado 4D (3D + Color/Color)
- 6. Python/matplotlib: trazado de un cubo 3d, una esfera y un vector?
- 7. imshow para 3D? (Python/Matplotlib)
- 8. Crear un trazado 3D a partir de un conjunto numpy 3D
- 9. trazado en 3D con python
- 10. ¿Cómo puedo hacer una línea 3D simple con Matplotlib?
- 11. forma más sencilla de gráficos 3D superficie dada puntos 3d
- 12. enmascaramiento de una parte de un trazado contourf en matplotlib
- 13. Quiero hacer un gráfico SVG estático (desde matplotlib) interactivo a través del navegador
- 14. ¿Cómo mostrar un gráfico 3D de una matriz 3D isosurface en matplotlib mplot3D o similar?
- 15. Matplotlib: Anotando un gráfico de dispersión 3D
- 16. ¿Cómo puedo ocultar los ejes en matplotlib 3d?
- 17. Dada una superficie normal, encontrar rotación para Plane 3D
- 18. gráficos 3D utilizando maplot3d de matplotlib-
- 19. paquete de trazado para C++
- 20. Cómo trazar una colección de parches 3D en matplotlib?
- 21. Trazado función implícita
- 22. matplotlib: superficie en 3D de una matriz rectangular de alturas
- 23. nombre de un paquete para una función dada en I
- 24. trazado en 3D continuo (es decir, actualización de figura) usando python-matplotlib?
- 25. Trazado intervalos marcados en matplotlib/gnuplot
- 26. ¿Cómo crear una leyenda para la barra 3D en matplotlib?
- 27. Matplotlib: "Error de proyección desconocida '3d'"
- 28. Matplotlib: trazado simultáneo en múltiples hilos
- 29. Matplotlib 3D Dispersión con de Colorbar
- 30. Trazado de una 2da matriz con mplot3d
El [capacidad de gráficos 3D] (http://matplotlib.sourceforge.net/mpl_toolkits/mplot3d/tutorial.html) en matplotlib solamente se añadió en muy versiones recientes, hasta donde yo sé. –
Ya he consultado esa página y no he podido encontrar ningún ejemplo de pasar una función z arbitraria a un trazador 3D – WhatsInAName