2011-08-20 53 views
15

¿Hay alguna manera de trazar un campo de vector 3D en matplotlib? He visto quiver, pero solo se trata de un "campo vectorial de flechas 2-D". ¿Hay una contraparte 3D en alguna parte?campo de vector 3D en matplotlib

LMGTFY:
pensé una documentación de la contraparte 3D sería devuelto por este término de búsqueda:

"3-D vector field of arrows" matplotlib 

pero vuelve cero resultados

+8

Mayavi puede trazar campo vectorial 3D: http://github.enthought.com/mayavi/mayavi/mlab.html#id1 – HYRY

+2

el enlace está roto! – denfromufa

Respuesta

24

A partir de matplotlib 1.4.x, el carcaj ahora se puede trazar en 3d.

quiver3d_demo.py en el directorio de ejemplos:

from mpl_toolkits.mplot3d import axes3d 
import matplotlib.pyplot as plt 
import numpy as np 

fig = plt.figure() 
ax = fig.gca(projection='3d') 

x, y, z = np.meshgrid(np.arange(-0.8, 1, 0.2), 
         np.arange(-0.8, 1, 0.2), 
         np.arange(-0.8, 1, 0.8)) 

u = np.sin(np.pi * x) * np.cos(np.pi * y) * np.cos(np.pi * z) 
v = -np.cos(np.pi * x) * np.sin(np.pi * y) * np.cos(np.pi * z) 
w = (np.sqrt(2.0/3.0) * np.cos(np.pi * x) * np.cos(np.pi * y) * 
    np.sin(np.pi * z)) 

ax.quiver(x, y, z, u, v, w, length=0.1) 

plt.show() 

enter image description here

+0

¿por qué las coordenadas x, y, z en una matriz 3D? No entiendo cómo leerlos. ¿Y cómo ingresar el mío? Cualquier ayuda es genial gracias –

+0

Los puntos no tienen que ser una matriz en 3D. Podrías simplemente crear/cargar tus propias matrices de posición 1D x, y, z, y las velocidades correspondientes u, v, w. La llamada a temblar sería lo mismo. – klimaat

Cuestiones relacionadas