首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >光谱(SPy)标签图例

光谱(SPy)标签图例
EN

Stack Overflow用户
提问于 2016-08-07 18:45:22
回答 1查看 447关注 0票数 0

我想在spectral模块绘制的图像下面放一个图例。我想知道是否有一种内置的方法可以做到这一点?我还没有找到任何关于在spectral API中创造传奇的东西。

下面是一个例子

代码语言:javascript
复制
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))

我可以像这样用labels绘制img

代码语言:javascript
复制
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')

现在,我想在图像下面放置一个图例。

代码语言:javascript
复制
labelDictionary={0:'Unknown', 1:'Gravel', 2:'Aslphalt', 3:'Glass'}

从源代码中,我看到标签颜色取自:

代码语言:javascript
复制
spectral.spy_colors

此外,它们是使用以下代码绘制的:

代码语言:javascript
复制
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())

我想我可以提取这些颜色,并使用自定义函数将它们映射到标签和标签名称。这是创造传奇的正确方式,还是有现成的方式,为了不重复发明轮子……

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2016-08-07 20:47:39

我像这样添加了图例:

代码语言:javascript
复制
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) ]

一旦有了标签补丁,就很容易添加图例:

代码语言:javascript
复制
plt.legend(handles=labelPatches, ncol=2, fontsize='medium', 
           loc='upper center', bbox_to_anchor=(0.5, -0.05));

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/38813331

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档