matplotlib 中的 3D 矢量场

Posted

技术标签:

【中文标题】matplotlib 中的 3D 矢量场【英文标题】:3D vector field in matplotlib 【发布时间】:2011-10-31 02:57:05 【问题描述】:

有没有办法在 matplotlib 中绘制 3D 矢量场?我见过quiver,但它只谈论“二维箭头矢量场”。某处是否有 3D 对应物?

LMGTFY: 我想这个搜索词会返回一个 3D 对应的文档:

"3-D vector field of arrows" matplotlib

但它返回零结果

【问题讨论】:

mayavi可以绘制3D矢量场:github.enthought.com/mayavi/mayavi/mlab.html#id1 【参考方案1】:

从 matplotlib 1.4.x 开始,quiver 现在可以在 3d 中绘图。

quiver3d_demo.py in the examples directory:

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

【讨论】:

为什么 x,y,z 坐标在 3D 数组中???我不明白如何阅读它们。以及如何输入我自己的?任何帮助都非常感谢 点不必是 3D 数组。您可以创建/加载自己的一维位置数组 x、y、z 和相应的速度 u、v、w。对 quiver 的调用是一样的。【参考方案2】:

我不这么认为。 matplotlib 中的 3D 绘图相当新,到目前为止,这就是它的全部内容:http://matplotlib.sourceforge.net/mpl_toolkits/mplot3d/index.html

如果正在开发矢量图,请询问 matplotlib 邮件列表。

【讨论】:

以上是关于matplotlib 中的 3D 矢量场的主要内容,如果未能解决你的问题,请参考以下文章

Matplotlib:quiver 和 imshow 叠加,如何设置两个颜色条?

如何在 matplotlib mplot3D 或类似文件中显示 3D 数组等值面的 3D 图?

Python-Matplotlib可视化(10)——一文详解3D统计图的绘制

使用matplotlib中的bar函数绘制柱状图

matplotlib 中的曲面和 3d 轮廓

如何使用 matplotlib 在 3 维空间中绘制一条线