2016-08-07 11 views
0

spectralモジュールで描画された画像の下に凡例を入れたいと思います。これを行うための組み込み方法があるのだろうか?私はspectral APIで伝説を作ることについて何も発見していません。Spectral(SPy)ラベルの凡例

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

今、私は画像の下に凡例を配置したいと思います:ここで

は、私はこのような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)) 

例です。私はラベルの色から取られていることがわかり、ソースコードから

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

:ラベルのパッチを持っている伝説が追加するのは簡単です
関連する問題