仅显示图例Python Matplotlib中的某些项目

仅显示图例Python Matplotlib中的某些项目,python,matplotlib,legend,Python,Matplotlib,Legend,我目前正在绘制大量分类数据的堆叠条形图,只希望在图例中显示重要的物种(我希望显示~500个物种中的~25个)。有没有一个简单的方法可以做到这一点?以下是我的代码: labels=['0','20','40','60','80','100','120'] ax1=subj1df.plot(kind='barh', stacked=True,legend=True,cmap='Paired', grid=False) legend(ncol=2,loc=2, bbox_to_anchor=(1.05

我目前正在绘制大量分类数据的堆叠条形图,只希望在图例中显示重要的物种(我希望显示~500个物种中的~25个)。有没有一个简单的方法可以做到这一点?以下是我的代码:

labels=['0','20','40','60','80','100','120']
ax1=subj1df.plot(kind='barh', stacked=True,legend=True,cmap='Paired', grid=False)
legend(ncol=2,loc=2, bbox_to_anchor=(1.05, 1), borderaxespad=0.)
label1=['Baseline','8h','24h','48h','96h','120h']
ax1.set_yticklabels(label1, fontdict=None, minor=False)
plt.title('Subject 1 Phyla',fontweight='bold')
plt.savefig('Subject1Phyla.eps', format='eps', dpi=1000)
ax1.set_xticklabels(labels)
编辑:尝试添加此项以仅显示一个图例条目,但仅返回空图例:

h, l = ax1.get_legend_handles_labels()
legend(l[4],h[4],ncol=2,loc=2, bbox_to_anchor=(1.05, 1), borderaxespad=0.)

我经常为我不想显示的图例插入一个空标签。我举了一个非常简单的例子,希望能对你们有所帮助。您需要将其调整为您自己的数据,但您需要的元素应该在那里

import matplotlib.pyplot as plt 
import numpy as np

myY=np.random.randint(20, size=10)
myX=np.arange(0,len(myY))

selected=[5,10,15]

fig = plt.figure()
for X,Y in zip(myX,myY):
    if Y in selected:
        mylabel="label = %s"%(Y); mycolor='blue'
    else:
        mylabel=None; mycolor='red'
    plt.scatter(X,Y,50, color=mycolor, label=mylabel)
plt.legend()
plt.show()
这将创建以下绘图:

这项工作:

plt.plot(x, y, label='_nolegend_')

无论出于什么原因,这两个答案都不适合我的情况。以上所述的工作原理和实际情况:

legend还提供艺术家列表和标签列表,以精确控制进入您的legend的内容–塔卡斯韦尔2014年7月11日4:46

代码的结果是:
您还可以使用空字符串变量:

    plt.plot(xData, yData, ..., label=str())
通过传递一个空str()对象,它不会写下任何内容


您的意思是要绘制所有500个变量,但只在图例中显示选定的25个?
图例还需要艺术家列表和标签列表,以精确控制进入图例的内容这可能会起作用,但是否有办法将选定项作为我想要的图例条目字符串列表?我的绘图是一个包含许多条目的堆叠条形图。当然。对于每个条目(由X、Y和名称标识),请检查当前条目是否位于要显示其图例的选定标签列表中。除非您显示有关数据外观的更多信息,否则很难向您演示如何执行此操作。请使用label='nolegend'Philipp means
label='nolegend'
(注意下划线),尝试指定的解决方案,请参见中的答案。什么?!?工作完美,但这是一个意想不到的解决方案:)年度黑客。这个可怜的家伙运气不好,他希望他的标签上写着
\u nolegend\uu
。开发人员为什么选择这个而不是
标签=无
?所有以
\u
开头的内容都从图例中跳过。或者保存自己3个字符,然后写下label=”“正确缩放的干净解决方案,谢谢分享
    plt.plot(xData, yData, ..., label=str())