2011-08-20 45 views
15

Có cách nào để vẽ đồ thị trường vector 3D trong matplotlib không? Tôi đã thấy quiver, nhưng nó chỉ nói về "trường vector mũi tên 2 chiều". Có một đối tác 3D ở đâu đó không?Trường vector 3D trong matplotlib

LMGTFY:
tôi đã tìm một tài liệu hướng dẫn cho các đối tác 3D sẽ được trả lại bởi thuật ngữ tìm kiếm này:

"3-D vector field of arrows" matplotlib 

Nhưng nó sẽ trả về không có kết quả

+8

mayavi có thể vẽ vector lĩnh vực 3D: http://github.enthought.com/mayavi/mayavi/mlab.html#id1 – HYRY

+2

liên kết bị hỏng! – denfromufa

Trả lời

24

Kể từ matplotlib 1.4.x, hiện giờ rung động có thể được vẽ theo dạng 3d.

quiver3d_demo.py trong thư mục ví dụ:

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

tại sao tọa độ x, y, z trong mảng 3D ??? Tôi không hiểu cách đọc chúng. Và làm thế nào để đầu vào của riêng tôi? Bất kỳ trợ giúp nào là tuyệt vời nhờ –

+0

Các điểm không phải là một mảng 3D. Bạn chỉ có thể tạo/tải các mảng vị trí 1D của riêng bạn x, y, z và vận tốc tương ứng u, v, w. Cuộc gọi run run sẽ giống nhau. – klimaat

Các vấn đề liên quan