2016-08-07 3 views
0

spectral 모듈에 의해 그려지는 이미지 아래에 범례를 넣고 싶습니다. 이 작업을 수행 할 수있는 기본 방법이 있는지 궁금합니다. 나는 spectral API에서 전설을 세우는 것에 관해 아무것도 발견하지 못했다.스펙트럼 (SPy) 레이블 범례

다음은이 같은 labels이 함께 img을 그릴 수있는 예를

img = np.array([111, 112, 113, 121, 122, 123, 131, 132, 133, 
       211, 212, 213, 221, 222, 223, 231, 232, 233, 
       311, 312, 313, 321, 322, 323, 331, 332, 333]).reshape((3,3,3)) 
labels = np.array([0, 1, 1, 2, 2, 2, 3, 3, 3]).reshape((3,3)) 

입니다 :

from spectral import imshow as spyShow 
imageView = spyShow(data=img, bands=(0,1,2), classes=labels, fignum=1, interpolation='none') 
imageView.set_display_mode('overlay') 

enter image description here

가 지금은 이미지 아래의 범례를 배치하고 싶습니다. 내가 레이블 색상에서 가져 볼 소스 코드에서

labelDictionary={0:'Unknown', 1:'Gravel', 2:'Aslphalt', 3:'Glass'} 

:

spectral.spy_colors 

그들은 다음 코드로 그려 또한 :

import matplotlib.pyplot as plt 
from matplotlib.colors import ListedColormap, NoNorm 
cm = ListedColormap(np.array(spectral.spy_colors)/255.) 
plt.imshow(a, cmap=cm, vmin = 0, interpolation='none', norm=NoNorm()) 

난 사람들을 추출 할 수 있다고 생각 색상을 만들고 사용자 정의 기능을 사용하여 라벨 및 라벨 이름에 매핑합니다. 일단 당신

from matplotlib import patches 
from spectral import spy_colors 
labelPatches = [ patches.Patch(color=spy_colors[x]/255., 
       label=labelDictionary[x]) for x in np.unique(labels) ] 

:이 같은 전설을 추가

답변

0

...이 전설을 할 수있는 올바른 방법인가, 또는 기성 방법은 바퀴를 개혁하지의 이익을 위해,이

plt.legend(handles=labelPatches, ncol=2, fontsize='medium', 
      loc='upper center', bbox_to_anchor=(0.5, -0.05)); 

enter image description here

: 라벨 패치가 전설은 쉽게 추가 할 수있다