Mostrar solo ciertos elementos en la leyenda Python Matplotlib

Actualmente estoy trazando un gráfico de barras astackdas de una gran cantidad de datos taxonómicos, y solo deseo mostrar especies significativas en la leyenda (de ~ 500 deseo mostrar ~ 25). ¿Hay una manera simple de hacer esto? A continuación se muestra el código que tengo:

labels=['0','20','40','60','80','100','120'] ax1=subj1df.plot(kind='barh', stacked=True,legend=True,cmap='Paird', 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) 

Editar: intenté agregar esto para mostrar solo una entrada de leyenda, sin embargo, solo devuelve una leyenda vacía:

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

Related of "Mostrar solo ciertos elementos en la leyenda Python Matplotlib"

A menudo inserto una etiqueta vacía para las leyendas que no quiero mostrar. Hice un ejemplo extremadamente simple que espero te ayude. Deberá ajustar esto a sus propios datos, pero los elementos que necesita deberían estar allí.

 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() 

Esto crea la siguiente ttwig: introduzca la descripción de la imagen aquí

Esto funciona:

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

fuente

Por la razón que sea, ambas respuestas no funcionaron para mi situación. Lo que funcionó, y en realidad se indicó anteriormente:

La leyenda también toma una lista de artistas y una lista de tags para controlar con precisión lo que se incluye en su leyenda: tacaswell, 11 de julio de 14 a las 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() 

El resultado del código: El resultado del código:

También puede utilizar una variable de cadena vacía:

  plt.plot(xData, yData, ..., label=str()) 

Al pasar un objeto str () vacío, no anota nada.

Referencia de la API de Matplotlib