Matplotlib imshow offset для совпадения оси?
Я рисую кучу координат UTM, используя matplotlib.pyplot.scatter. У меня также есть фоновая фотография, которую я знаю, точно соответствует размеру фигуры. Когда я рисую свои данные и устанавливаю ось, я могу правильно отобразить разброс. Если я рисую воздушную фотографию, используя imshow, она использует номер пикселя в качестве местоположения оси. Мне нужно переместить изображение (массив numpy) в правильную позицию UTM. Есть идеи? Я новичок в matplotlib и numpy.
Например: я знаю, что верхний левый угол изображения (imshow coord: 0,0) имеет координату UTM (269658.4, 538318.2). Как я могу рассказать о том же?
Я также должен сказать, что я исследовал базовую карту, но пока не поддерживает полностью поддержку UTM. Моя область исследования очень маленькая.
Ответы
Ответ 1
Вам нужно использовать аргумент ключевого слова extent
для imshow.
В качестве быстрого примера:
import numpy as np
import matplotlib.pyplot as plt
# Random points between 50000 and 51000
x, y = 1000 * np.random.random((2, 10)) + 50000
# A 10x10 "image"...
image = np.arange(100).reshape((10,10))
# In a lot of cases, image data will be "flipped" vertically, so you may need
# use the `origin` kwarg, as well (or just swap the ymin and ymax ordering).
plt.imshow(image, extent=[x.min(), x.max(), y.min(), y.max()])
plt.plot(x, y, 'ro')
plt.show()
![enter image description here]()