我已经使用matplotlib在python中创建了我自己的箭袋函数(提供的箭袋图不能满足我的一些需求,这并不重要。)我的功能如下,我已经成功了绘制箭头意图开始的小绿色圆圈(下图)。箭头似乎总是在它们指向的方向上偏移相同的量。箭头起始位置和圆圈位置完全相同。
def my_own_quiver_function(axis, X_pos, Y_pos, X_val, Y_val):
standard_vel = 500000.
scale_factor = 0.0005
vels = np.hypot(X_val, Y_val)
vels = vels/(standard_vel)
widths = vels**2.
widths = widths.clip(max=1.0)
for xp in range(len(X_pos[0])):
for yp in range(len(Y_pos[0])):
xvel = X_val[xp][yp]*scale_factor
yvel = Y_val[xp][yp]*scale_factor
width_val = widths[xp][yp]
axis.add_patch(mpatches.Circle((X_pos[xp][yp], Y_pos[xp][yp]), radius=0.1, lw=0.5, color='m'))
axis.add_patch(mpatches.FancyArrowPatch((X_pos[xp][yp], Y_pos[xp][yp]), (X_pos[xp][yp]+xvel, Y_pos[xp][yp]+yvel), color='w', linewidth=1.*width_val, mutation_scale=30.*width_val,arrowstyle='->'))
Urgh我没有足够的声望点,但图片可以在这里找到:http://imgur.com/S1GywxX
由于这个原因,他们的颤抖看起来很不稳定,真是令人沮丧。
编辑:我已经尝试删除突变,因为文档说它挤压并拉伸箭头,但它没有改变任何东西。
答案 0 :(得分:0)
感谢@Jezzamon指出ShrinkA和ShrinkB输入。这些的默认值设置为2.0,可能是为了确保箭头不与其他注释(如文本或形状)重叠。我将它们设置为0.0并修复它!我个人认为它不应该违约......但是你去了!