xlabel with outside found example python matplotlib legend

with - Mostrar solo ciertos elementos en la leyenda Python Matplotlib



no handles with labels found to put in legend. (3)

Actualmente estoy trazando un gráfico de barras apiladas 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=''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)

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


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 trama:


Esto funciona:

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

source


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 etiquetas 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: