我目前正在绘制一个包含大量分类数据的堆积条形图,并且只希望在图例中显示重要的物种(我希望显示约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.)
答案 0 :(得分:131)
答案 1 :(得分:12)
我经常为我不想展示的传说插入一个空标签。我做了一个非常简单的例子,我希望能帮助你。您需要将此调整为您自己的数据,但您需要的元素应该在那里。
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()
这会创建以下图表:
答案 2 :(得分:4)
无论出于何种原因,这两个答案对我的情况都不起作用。什么起作用,实际上如上所示:
传奇还会收集一系列艺术家和一系列标签,以精确控制您的传奇内容 - tacaswell Jul 11&14; 14 at 4:46
import pandas as pd
import matplotlib.pyplot as plt
import pylab
pd.Series(range(10)).plot(color = 'grey')
x = list(range(10))
y = [i + 1 for i in x]
scat1 = plt.scatter(x, y)
pylab.legend([scat1],['moved points'], loc = 'upper left')
plt.show()
代码的结果:
答案 3 :(得分:1)