2012-09-07 20 views
14

Wykreślam pęczek współrzędnych UTM za pomocą matplotlib.pyplot.scatter. Mam również zdjęcie w tle, które znam, dokładnie odpowiada rozmiarowi figury. Kiedy wykreślam swoje dane i ustalam oś, mogę poprawnie wyświetlać rozrzut. Jeśli wykreśliłem zdjęcie lotnicze przy pomocy imshow, numer piksela jest wykorzystywany jako położenie osi. Muszę przesunąć obraz (numpy array) do jego właściwej pozycji UTM. Jakieś pomysły? Jestem całkiem nowy w matplotlib i numpy.Matplotlib imshow offset, aby dopasować oś?

Na przykład wiem, że lewy górny róg obrazu (imshow współrzędnych: 0,0) został UTM współrzędnych (269658.4, 538318.2). Jak powiedzieć imshow to samo?

Pragnę również powiedzieć, że badane mapę bazową, ale nie wydaje się, aby w pełni wspierać jeszcze UTM. Mój obszar badań jest bardzo mały.

Odpowiedz

18

trzeba użyć argumentu extent słów kluczowych, aby imshow.

Jako szybki przykład:

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

+0

Dziękujemy! To zrobiło dokładnie to, co chciałem! Nie wiem, dlaczego nie mogłem znaleźć tego słowa kluczowego w interfejsie API. –

+0

Łatwo zgubić się we wszystkich argumentów kluczowych do poszczególnych funkcji matplotlib. Ale w dokumentach, obiecuję! :) Cieszę się, że mogę pomóc, w każdym razie. –

Powiązane problemy