有没有办法设置颤抖箭头的大小,例如`ax.arrow`中的`head_width`?

时间:2019-07-07 11:32:22

标签: python matplotlib

这个问题来自这个post。我正在尝试绘制this

这样的3d向量空间

这是代码

import matplotlib.pyplot as plt
from mpl_toolkits.mplot3d import Axes3D
import numpy as np

fig = plt.figure()
ax = fig.add_subplot(111, projection='3d')
ax.quiver(0, 0, 0, 0, 1, 0)
ax.quiver(0, 0, 0, 1, 0, 0)
ax.quiver(0, 0, 0, 0, 0, 1)
ax.quiver(0, 0, 0, 1, 1, 1)
ax.quiver(0, 0, 0, 0, 3, 0, color='y', alpha=0.5)
ax.quiver(0, 0, 0, 3, 0, 0, color='r', alpha=0.9)

limt = 2
ax.set_xlim([-limt, limt])
ax.set_ylim([-limt, limt])
ax.set_zlim([-limt, limt])

ax.set_xlabel('x_axis')
ax.set_ylabel('y_axis')
ax.set_zlabel('z_axis')

xx, yy = np.meshgrid(np.arange(0,2,.2), np.arange(0,2,.2))
zz = np.zeros((10,10))
ax.plot_surface(xx, yy, zz, alpha=0.5)

# ax.axis("off")
plt.show()

产生这个数字。

enter image description here

右红色箭头太大,是否可以设置其大小,例如head_width中的ax.arrow

所有headlength, headwidth, width都会收到错误消息AttributeError: Unknown property headwidth,因此thisthis都无法解决此问题。

1 个答案:

答案 0 :(得分:2)

arrow_length_ratio可能满足您的需求。

ax.quiver(0, 0, 0, 3, 0, 0, color='r', alpha=0.9, 
 arrow_length_ratio=0.1)

enter image description here