在图像上叠加 matplotlib quiver
superimpose matplotlib quiver on image
我试图在图像上叠加箭袋渐变箭头,但由于原点位置不同,它们看起来不正确。我该如何解决这个问题?
这是一个例子。左边的图像是我期望的渐变,但是一旦我在图像上绘制它们,它们就会指向错误的方向,因为原点位置发生了变化。
import matplotlib.pyplot as plt
import numpy as np
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("float")
dy, dx = np.gradient(test_array)
plt.imshow(test_array)
plt.quiver(dx, dy)
plt.show()
如果您希望获得与单独绘制箭头相同的绘图方向,您可以通过将 origin='lower'
添加到 imshow
调用来更改 origin of the image:
plt.imshow(test_array, origin='lower')
如果你想保持图像原点在左上角,你可以在调用plt.quiver
时改变箭头的方向:
dy, dx = np.gradient(test_array)
plt.imshow(test_array)
plt.quiver(dx, -dy)
plt.show()
我试图在图像上叠加箭袋渐变箭头,但由于原点位置不同,它们看起来不正确。我该如何解决这个问题?
这是一个例子。左边的图像是我期望的渐变,但是一旦我在图像上绘制它们,它们就会指向错误的方向,因为原点位置发生了变化。
import matplotlib.pyplot as plt
import numpy as np
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("float")
dy, dx = np.gradient(test_array)
plt.imshow(test_array)
plt.quiver(dx, dy)
plt.show()
如果您希望获得与单独绘制箭头相同的绘图方向,您可以通过将 origin='lower'
添加到 imshow
调用来更改 origin of the image:
plt.imshow(test_array, origin='lower')
如果你想保持图像原点在左上角,你可以在调用plt.quiver
时改变箭头的方向:
dy, dx = np.gradient(test_array)
plt.imshow(test_array)
plt.quiver(dx, -dy)
plt.show()