Ahoy!
Я пытаюсь построить векторы в 3D с помощью функции matplotlib quiver
. Чтобы помочь визуализировать их, я также хотел бы построить ортогональные оси с центром в начале координат.
В идеале, я бы хотел переместить так называемые шипы, но согласно этой SO-записи , это не легко исправить.
Я закончил тем, что построил оси в виде трех векторов вдоль x, y & z (см. Мой код ниже), но я не могу не думать, что это ужасное решение ... Любые входные данные будут высоко оценены.
Вот код:
import numpy as np
import matplotlib.pyplot as plt
from mpl_toolkits.mplot3d import Axes3D
f = plt.figure(1)
ax=plt.gca()
soa = np.array([[0, 0, 0, 1, 0, 0],[0, 0, 0, 0, 1, 0],[0, 0, 0, 0, 0, 1]])
X, Y, Z, U, V, W = zip(*soa)
soa2 = np.array([[0,0,0,np.sqrt(2)/2,np.sqrt(2)/2,np.sqrt(2)/2]])
I, J, K, F, G, H = zip(*soa2)
fig = plt.figure()
ax=Axes3D(fig)
ax.quiver(X, Y, Z, U, V, W, color='black')
ax.quiver(I, J, K, F, G, H)
ax.set_xlim([-1, 1])
ax.set_ylim([-1, 1])
ax.set_zlim([-1, 1])
f.show()
А вот изображение, возвращаемое этим сценарием:
