2012-09-07 24 views
14

Tôi đang vẽ một loạt các tọa độ UTM bằng cách sử dụng matplotlib.pyplot.scatter. Tôi cũng có một bức ảnh nền mà tôi biết phù hợp với mức độ chính xác của hình. Khi tôi vẽ dữ liệu của tôi và đặt trục tôi có thể hiển thị phân tán chính xác. Nếu tôi vẽ ảnh không khí bằng cách sử dụng imshow, nó sử dụng số pixel làm vị trí trục. Tôi cần phải chuyển hình ảnh (mảng numpy) thành vị trí UTM chính xác của nó. Bất kỳ ý tưởng? Tôi khá mới với matplotlib và gumpy.Matplotlib imshow có bù đắp cho khớp với trục không?

Ví dụ: Tôi biết rằng góc trên cùng bên trái của hình ảnh (tọa độ imshow: 0,0) có tọa độ UTM (269658.4, 538318.2). Làm thế nào để tôi nói với imshow điều tương tự?

Tôi cũng nên nói rằng tôi đã nghiên cứu Sơ đồ trang web nhưng có vẻ như nó chưa hỗ trợ đầy đủ UTM. Khu vực học tập của tôi rất nhỏ.

Trả lời

18

Bạn cần sử dụng đối số từ khóa extent để imshow.

Như một ví dụ nhanh:

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

Cảm ơn bạn! Điều này đã làm chính xác những gì tôi muốn! Tôi không chắc tại sao tôi không thể tìm thấy từ khóa đó trong API. –

+0

Dễ dàng bị lạc trong tất cả các đối số từ khóa với các hàm matplotlib khác nhau. Đó là trong các tài liệu, mặc dù, tôi hứa! :) Rất vui khi được trợ giúp, với bất kỳ giá nào. –