Поскольку линии по умолчанию рисуются поверх изображений, порядок вызова функции рисования здесь не имеет значения.
Чтобы нарисовать что-либо на изображении, важно знать координаты изображения . С этой целью imshow
имеет параметр extent=
с ограничениями по x и y. Точные координаты вашего изображения не ясны из вопроса, поэтому я использовал некоторые произвольные значения для примера.
imshow
заставляет соотношение сторон быть равным экстентам. Таким образом, фотографии и карты не деформируются. Но для расчетных значений такое фиксированное соотношение сторон часто не требуется. Вы можете изменить его с помощью aspect='auto'
.
Также обратите внимание, что изображения по умолчанию отображаются с началом координат вверху, так как это стандартно для большинства форматов изображений. Иногда для рисования сверху может потребоваться, чтобы начало координат было внизу (origin='lower'
vs origin='upper'
.
from matplotlib import pyplot as plt
import numpy as np
polar = np.array([[7.28073704e+01, -1.60300574e-02, 3.00000000e+00],
[1.68751118e+02, -2.28065027e-02, 4.00000000e+00],
[2.10662349e+02, -3.40033470e-02, 6.00000000e+00],
[1.20656915e+02, -1.65935831e-02, 5.00000000e+00],
[2.28887705e+01, -8.43417664e-04, 5.00000000e+00],
[1.27472877e+01, -7.25424861e-03, 2.00000000e+00],
[1.09924214e+02, -1.81133209e-02, 3.00000000e+00],
[5.85000000e+01, 0.00000000e+00, 4.00000000e+00],
[1.57589902e+02, -1.70840018e-02, 3.00000000e+00]])
fig, ax = plt.subplots()
final = 10-np.random.rand(500,500).cumsum(axis=0).cumsum(axis=1)
# final = cv2.imread('frame9.jpg')
plt.imshow(final, cmap=plt.cm.gray, extent=[0, 10, 0, polar[:,0].max()], aspect='auto', origin='lower')
for p in polar:
plt.plot([0, 1], [p[0], p[0]], c='red')
plt.show()
пример сюжета