2011-08-20 12 views
15

Czy istnieje sposób na wykreślenie pola wektorowego 3D w matplotlib? Widziałem quiver, ale mówi się tylko o "polu wektorowym 2-D strzał". Czy gdzieś jest odpowiednik 3D?Pole wektorowe 3D w matplotlib

LMGTFY:
Pomyślałem dokumentację dla odpowiednika 3D zostaną zwrócone przez tego hasła:

"3-D vector field of arrows" matplotlib 

Ale zwraca zero wyników

+8

mayavi pole wektorowe 3D można wykreślić: http://github.enthought.com/mayavi/mayavi/mlab.html#id1 – HYRY

+2

link jest uszkodzony! – denfromufa

Odpowiedz

24

Od wersji matplotlib 1.4.x kołczan może teraz drukować w 3d.

quiver3d_demo.py w katalogu przykładów:

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

dlaczego współrzędne X, Y, Z w tablicy 3D ??? Nie rozumiem, jak je czytać. A jak wprowadzić własne? Każda pomoc jest świetna dzięki –

+0

Punkty nie muszą być tablicą 3D. Możesz po prostu stworzyć/załadować własne tablice pozycji 1D x, y, z i odpowiednie prędkości u, v, w. Wezwanie do kołczanu byłoby takie samo. – klimaat

Powiązane problemy