Один из подходов - установить размер стрелки headaxislength
и headlength
таким образом, чтобы головка полностью закрывала вал.Длины здесь пропорциональны xy, длинам вектора, поэтому мы должны масштабировать 1. / width
(обратная пропорциональность) по длине вектора, np.sqrt(u**2 + v**2)
import matplotlib.pyplot as plt
import numpy as np
u = v = 2
length = np.sqrt(u**2 + v**2)
width=0.005
hal = hl = 1. / width * length
plt.quiver(0, 0, u, v, angles='xy', scale_units='xy', scale=1,
headwidth=hl,
headaxislength=hal,
headlength=hl,
width=width)
plt.axis([-2, u+1, -2, v+1])
