3D 箭袋图是 1.4 中的一个全新功能,它(及其文档)可能仍然有点粗糙。在这种情况下,我们可以尝试使用箭袋实现为LineCollection
(最终)继承自ScalarMappable
这意味着它知道什么是色彩图,并且返回的艺术家有该方法set_array
.
以文档为基础here http://matplotlib.org/mpl_toolkits/mplot3d/tutorial.html#quiver
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))
q = ax.quiver(x, y, z, u, v, w, length=0.1, cmap='Reds', lw=2)
q.set_array(np.random.rand(np.prod(x.shape)))
plt.show()
但是,您会注意到heads颜色与shaft这是由于其实现方式的实现细节,每个部分都被绘制为自己的线。
直接使用Norm
和颜色图函数并将结果传递给colors
可能是一个更好的课程。