Я хочу использовать plt.quiver
для отображения стрелок градиента массива под правильным углом.
import numpy as np
import matplotlib.pyplot as plt
test_array = np.array([[ 0., 0., 0., 0., 0.],
[ 0., 64., 128., 64., 0.],
[ 0., 127., 255., 127., 0.],
[ 0., 64., 127., 64., 0.],
[ 0., 0., 0., 0., 0.]]).astype(np.float64)
dy,dx = np.gradient(test_array)
theta =np.degrees(np.arctan2(dy,dx))
print(theta)
color = np.sqrt(dy**2 + dx**2)
plt.quiver(dx,dy,color)
plt.show()
Однако, если я печатаю theta
:
[[ 0. 90. 90. 90. 0. ]
[ 0. 44.77531182 90. 135.22468818 180. ]
[ 0. 0. -90. 180. 180. ]
[ 0. -45. -90. -135. 180. ]
[ 0. -90. -90. -90. 0. ]]
, я вижу, что углы в первом ряду равны [90,90,90]
Когда я использую quiver
для построения градиента Я вижу, что стрелки указывают в противоположном направлении.
Я бы предположил, что углы отображаются против часовой стрелки, но вместо этого они отображаются по часовой стрелке. Что мне не хватает? Может кто-нибудь объяснить?