【发布时间】:2015-05-13 21:17:06
【问题描述】:
有没有办法改变箭袋图中各个箭头的长度?
我使用以下方法创建了一个情节:
lines_to_draw = list of numpy 3d vectors
xs, ys, zs = list of coordinates
us, vs, ws = list of displacements
fig = plt.figure()
ax = fig.add_subplot(111, projection='3d')
for line in lines_to_draw:
ax.plot(line[:,0], line[:,1], line[:,2], color='green'
ax.quiver(xs, ys, zs, us, vs, ws)
看起来像这样(轴已关闭):
问题是所有箭头看起来都是相同的大小。文档表明可能是这种情况(特别是 length 参数):
Axes3D.quiver(*args, **kwargs) 绘制一个 3D 箭头场。
调用签名:
quiver(X, Y, Z, U, V, W, **kwargs) 参数:
X、Y、Z:箭头位置的x、y、z坐标
U、V、W:箭头指向的方向向量参数可以是 类数组或标量,只要它们可以一起广播。 参数也可以是掩码数组。如果任何一个元素 参数被屏蔽,则相应的 quiver 元素将不会 绘制。
关键字参数:
长度:[1.0 | float] 每个箭袋的长度,默认为 1.0, 单位与坐标轴相同
箭头长度比:[0.3 |浮动] 箭头相对于箭袋的比率,默认为 0.3 任意 额外的关键字参数被委托给 LineCollection
为了澄清起见,向量的大小最多相差 30 倍。所以应该有一个非常明显的差异。
【问题讨论】:
-
使用长度参数时会发生什么?
-
它平等地缩放所有箭头,抱歉,应该提到这一点。我在 Github 上对
matplotlib进行了更多研究,我很确定它会规范化每个(u_i, v_i, w_i)^T向量。 -
你是对的。您可以按长度类别和
quiver分别拆分数据。虽然,看看这个,这对数据显示有用吗?读者不会混淆短箭头和几乎垂直于图像平面的箭头吗?也许是颜色变化? -
我也应该指定我的用例。这些不会用于渲染单个图像。它用于可视化分子的正常模式,并且总是通过旋转图像来完成,以便我们可以考虑投影。我正在向 matplotlib 提交 PR,因为维护者认为向量不应该被规范化。
标签: python matplotlib