Подтвердить что ты не робот

Matplotlib imshow offset для совпадения оси?

Я рисую кучу координат UTM, используя matplotlib.pyplot.scatter. У меня также есть фоновая фотография, которую я знаю, точно соответствует размеру фигуры. Когда я рисую свои данные и устанавливаю ось, я могу правильно отобразить разброс. Если я рисую воздушную фотографию, используя imshow, она использует номер пикселя в качестве местоположения оси. Мне нужно переместить изображение (массив numpy) в правильную позицию UTM. Есть идеи? Я новичок в matplotlib и numpy.

Например: я знаю, что верхний левый угол изображения (imshow coord: 0,0) имеет координату UTM (269658.4, 538318.2). Как я могу рассказать о том же?

Я также должен сказать, что я исследовал базовую карту, но пока не поддерживает полностью поддержку UTM. Моя область исследования очень маленькая.

4b9b3361

Ответ 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