2011-08-09 46 views
23

Tôi đã quản lý để vẽ dữ liệu của mình và muốn thêm hình nền (bản đồ) vào đó. Dữ liệu được vẽ bằng các giá trị dài/lat và tôi có các giá trị dài/lat cho ba góc của hình ảnh (trên cùng bên trái, trên cùng bên phải và dưới cùng bên trái).cách sử dụng 'mức độ' trong matplotlib.pyplot.imshow

Tôi đang cố gắng tìm hiểu cách sử dụng tùy chọn 'mức độ' với imshow. Tuy nhiên, các ví dụ tôi tìm thấy không giải thích cách gán x và y cho mỗi góc (trong trường hợp của tôi, tôi có thông tin cho ba góc).

Làm cách nào tôi có thể chỉ định vị trí của ba góc cho hình ảnh khi thêm hình ảnh vào ô?

Cảm ơn

Trả lời

29

Độ dài xác định hình ảnh tối đa và tối của giá trị nằm ngang và dọc. Phải mất bốn giá trị như vậy: extent=[horizontal_min,horizontal_max,vertical_min,vertical_max].

Giả sử bạn có kinh độ dọc theo trục hoành, thì bạn sẽ mất extent=[longitude_top_left,longitude_top_right,latitude_bottom_left,latitude_top_left]. longitude_top_left và longitude_bottom_left phải giống nhau, latitude_top_left và latitude_top_right phải giống nhau và các giá trị trong các cặp này có thể hoán đổi cho nhau.

Nếu phần tử đầu tiên của hình ảnh của bạn phải được vẽ ở phía dưới bên trái, sau đó sử dụng tùy chọn origin='lower' imshow, nếu không, mặc định 'phía trên' là thứ bạn muốn.

+0

Vẫn chưa rõ. Những gì bạn có nghĩa là "tối đa của các giá trị ngang"? Không có giá trị nào nằm ngang: có ma trận 2d. Bạn có nghĩa là tối đa trong mỗi hàng? Nhưng có một loạt chúng. Tối đa so với những người sau đó? Nhưng sau đó ngang và dọc là như nhau. –

+0

Tối đa là số được viết ở cạnh phải của ma trận trong ô, min là số ở cạnh trái. – Yann

8

Đây là ví dụ dựa trên http://matplotlib.org/examples/pylab_examples/image_demo3.html cho biết mức độ sử dụng.

#!/usr/bin/env python 
from pylab import * 
try: 
    from PIL import Image 
except ImportError, exc: 
    raise SystemExit("PIL must be installed to run this example") 

import matplotlib.cbook as cbook 

datafile = cbook.get_sample_data('ada.png') 
h = Image.open(datafile) 
dpi = rcParams['figure.dpi'] 
figsize = h.size[0]/dpi, h.size[1]/dpi 

figure(figsize=figsize) 
ax = axes([0,0,1,1], frameon=False) 
ax.set_axis_off() 
ax.set_xlim(0,2) 
ax.set_ylim(0,2) 
im = imshow(h, origin='upper',extent=[-2,4,-2,4]) # axes zoom in on portion of image 
im2 = imshow(h, origin='upper',extent=[0,.5,0,.5]) # image is a small inset on axes 

show() 

Nếu bạn không đặt giới hạn trục, chúng sẽ trở thành mức độ của bạn & thì dường như không có tác dụng.

Ada Lovelace image with inset

Các vấn đề liên quan