Verschieben der vorhandenen Legende in Matplotlib 1.5.1

Ich habe Antworten auf eine vorherige Frage ohne Erfolg in Matplotlib 1.5.1.

Ich habe eine Seefigur:

import seaborn as sns %matplotlib inline import matplotlib.pyplot as plt import numpy as np tips = sns.load_dataset("tips") g = sns.jointplot("total_bill", "tip", data = tips[["total_bill", "tip"]].applymap(lambda x : -np.log10(x))) 

Das funktioniert nicht:

 g.ax_joint.legend(loc = 'lower right') 

So gut wie das:

 plt.legend(bbox_to_anchor=(1.05, 1), loc=4, borderaxespad=0.) /usr/local/lib/python3.4/dist-packages/matplotlib/axes/_axes.py:520: UserWarning: No labelled objects found. Use label='...' kwarg on individual plots. warnings.warn("No labelled objects found. " 

Was ist der Weg, um eine vorhandene Legende zu finden, um in diesem Fall rechts zu senken?


Nicht eine elegante Lösung für jetzt ist:

 ll = g.ax_joint.get_legend().get_texts()[0]._text g.ax_joint.get_legend().remove() g.ax_joint.text( -12, -12, ll, fontsize=14) 

Allerdings glaube ich, dass es einen besseren Weg geben sollte.

  • Matplotlib 3D-Flächenplots nicht zeigen
  • Wie fügt man Gruppen-Etiketten für Balkendiagramme in Matplotlib hinzu?
  • Heatmap in Matplotlib mit Pcolor?
  • Matplotlib font nicht gefunden
  • Jupyter Notizbuch, ImportError: Kein Modul namens Pylab
  • Speichern von Plots zu pdf-Dateien mit matplotlib
  • One Solution collect form web for “Verschieben der vorhandenen Legende in Matplotlib 1.5.1”

    Es gibt keine leichte (mit Strings wie 'lower right' ) Weg, um eine bestehende Legende zu verlagern, die mir bewusst ist.

    Um die Griffe einer vorhandenen Legende zu erhalten, kannst du legend.legendHandles() . Für die Etiketten gibt legend.get_texts() Ihnen die legend.get_texts() . Um die eigentlichen Etiketten abzurufen, solltest du lieber .get_text() anstelle des privaten Attributs _text .

    Im Folgenden werden die Griffe und Etiketten einer vorhandenen Legende auf eine neue kopiert. Andere Eigenschaften der Legende werden nicht kopiert.

     legend = g.ax_joint.get_legend() labels = (x.get_text() for x in legend.get_texts()) g.ax_joint.legend(legend.legendHandles, labels, loc='lower right') 

    Ich habe vorher mit ax.get_legend_handles_labels() aber das wird in den Achsen suchen, nicht die Legende und ist in diesem Fall nicht sinnvoll.

    Python ist die beste Programmiersprache der Welt.