如何绘制3D矢量场

19 投票
2 回答
33048 浏览
提问于 2025-04-17 00:00

有没有办法在matplotlib中绘制3D向量场?我看到过quiver,但它只提到“2D箭头向量场”。那有没有3D的类似功能呢?

让我来帮你找找:
我想用这个搜索词可以找到3D版本的文档:

"3-D vector field of arrows" matplotlib

但是搜索结果是零。

2 个回答

0

我觉得不是这样的。用matplotlib做3D绘图还是比较新的功能,目前就只有这些内容:http://matplotlib.sourceforge.net/mpl_toolkits/mplot3d/index.html

你可以去问一下matplotlib的邮件列表,看看有没有人在开发矢量图的功能。

31

从matplotlib 1.4.x版本开始,quiver这个功能现在可以用来绘制三维图形了。

在示例目录中可以找到quiver3d_demo.py这个文件:

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()

在这里输入图片描述

撰写回答