私は現在、大量の分類データの積み上げ棒グラフをプロットしており、凡例に重要な種のみを表示したい(〜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)
編集:これを追加して1つの凡例エントリのみを表示しようとしましたが、空の凡例のみを返します。
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()
これにより、次のプロットが作成されます。
何らかの理由で、両方の答えは私の状況では機能しませんでした。動作し、実際には上記に示されたもの:
legendはまた、アーティストのリストとラベルのリストを使用して、レジェンドの内容を正確に制御します-tacaswell 14年7月11日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()
コードの結果:
空の文字列変数を使用することもできます。
plt.plot(xData, yData, ..., label=str())
空のstr()オブジェクトを渡すことにより、何も書き留めません。