Тебе нужна математика.
Пусть u будет единичным вектором в горизонтальном направлении:
u = np.array([1, 0])
Поворот вектора для максимально возможного количества точек данных на соответствующий угол тета:
def rotate_z(theta):
R =np.array([
[np.cos(theta), -np.sin(theta)],
[np.sin(theta), np.cos(theta)]])
return R
Теперь для всех ваших точек данных вы можете:
vecs =[]
for i in range(len(theta)):
R = rotate_z(theta[i])
vec = R @ u # matrix multiply
vec = vec + np.array([x[i], y[i]])
vecs.append(vec)
Теперь у вас есть все ваши векторы, готовые для построения графиков (я думаю, вы можете использовать plt.quiver (..)!