2013-03-01 2 views
14

말하자면 이미지가있는 점 집합을 배경으로 플로팅한다고 말합니다. 나는 예에서 Lena 이미지를 사용했습니다 :이 enter image description here이 날 수 있습니다알려진 모서리 좌표를 가진 플롯에 배경 이미지 추가하기

import numpy as np 
import matplotlib.pyplot as plt 
from scipy.misc import imread 

np.random.seed(0) 
x = np.random.uniform(0.0,10.0,15) 
y = np.random.uniform(0.0,10.0,15) 
img = imread("lena.jpg") 
plt.scatter(x,y,zorder=1) 
plt.imshow(img,zorder=0) 
plt.show() 

.

제 질문은 : 플롯에서 이미지의 모서리 좌표를 어떻게 지정합니까? 왼쪽 하단 모서리가 x, y = 0.5, 1.0이고 오른쪽 상단 모서리가 x, y = 8.0, 7.0이라고 가정 해 봅시다. 이미지 데이터와 일치 할 수 있도록 어느 정도의

imshow(img, zorder=0, extent=[left, right, bottom, top]) 

요소는 데이터 단위로 지정해야합니다

+2

입니다. 'from scipy.misc import imread'는 저에게 적합하지 않습니다. 대신에 http://stackoverflow.com/questions/5073386/how-do-you-directly-overlay-a-scatter-plot-on-top-of-a-jpg-image-in-matplotlib – toom

+0

@ 당신은 아마 SciPy의 구버전을 가지고있을 것입니다 – YXD

+0

흠, 나는 scipy 버전 '0.12.0'을 사용하고 있습니다. 이 버전은 2013 년 9 월 (http://sourceforge.net/projects/scipy/files/scipy/)부터 너무 오래된 것 같지 않습니다. 나는 그것을 양조를 통해 나의 맥에 설치했다. – toom

답변

28

extent 키워드는 imshow입니다. 인수의 순서는 [left, right, bottom, top]

import numpy as np 
import matplotlib.pyplot as plt 
from scipy.misc import imread 
import matplotlib.cbook as cbook 

np.random.seed(0) 
x = np.random.uniform(0.0,10.0,15) 
y = np.random.uniform(0.0,10.0,15) 

datafile = cbook.get_sample_data('lena.jpg') 
img = imread(datafile) 
plt.scatter(x,y,zorder=1) 
plt.imshow(img, zorder=0, extent=[0.5, 8.0, 1.0, 7.0]) 
plt.show() 
+0

훌륭한 작품입니다. 필자가 추가해야하는 것은'plt.xlim'과'plt.ylim'을 설정하는 것입니다. 그렇지 않으면 뷰포트/축이 배경 이미지에 단단히 고정됩니다. – YXD

+0

좋은 해결책! YXD 감사합니다! 누군가가 같은 것을 만났을 경우에 추가하고 싶었습니다. plt.scatter(), plt.imshow()를 수행하면 Figure가 "extent"kwarg로 정의 된 크기로 이미지로 덮일 수 있습니다. 이런 경우라면 plt.import()를 먼저 수행 한 다음 plt.scatter()를 수행하십시오. 그런 다음 데이터 (x, y)로 결정된 크기와 그래프에 표시된 이미지가 표시됩니다. – Ruby

7

당신은 extent 키워드 매개 변수를 사용해야합니다. 예를 들어 지리적 참조 된지도 이미지 위에 지리적 경로 (좌표 배열)를 오버레이하는 데 사용할 수 있습니다.

관련 문제