developer tip

범례 Python Matplotlib의 특정 항목 만 표시

optionbox 2021. 1. 5. 07:57
반응형

범례 Python Matplotlib의 특정 항목 만 표시


저는 현재 많은 양의 분류 학적 데이터에 대한 누적 막대 그래프를 플로팅하고 있으며 범례에서 중요한 종만 표시하고 싶습니다 (~ 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는 또한 아티스트 목록과 레이블 목록을 가져 와서 전설에 들어가는 내용을 정확하게 제어합니다 – tacaswell

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 () 객체를 전달하면 아무것도 기록하지 않습니다.

Matplotlib API 참조

참조 URL : https://stackoverflow.com/questions/24680981/show-only-certain-items-in-legend-python-matplotlib

반응형