Ich kenne folgende Fragen:
Matplotlib savefig mit einer Legende außerhalb des Plots
Wie man die Legende aus der Handlung entfernt
Es scheint, dass die Antworten auf diese Fragen den Luxus haben, mit dem exakten Schrumpfen der Achse herumspielen zu können, damit die Legende passt.
Das Verkleinern der Achsen ist jedoch keine ideale Lösung, da dadurch die Daten kleiner werden und die Interpretation tatsächlich schwieriger wird. besonders wenn es komplex ist und viele Dinge vor sich gehen ... daher braucht es eine große Legende
Das Beispiel einer komplexen Legende in der Dokumentation zeigt, dass dies erforderlich ist, da die Legende in ihrem Diagramm tatsächlich mehrere Datenpunkte vollständig verdeckt.
http://matplotlib.sourceforge.net/users/legend_guide.html#legend-of-complex-plots
Ich möchte in der Lage sein, die Größe des Figurenfelds dynamisch zu erweitern, um die expandierende Figurenlegende aufzunehmen.
import matplotlib.pyplot as plt
import numpy as np
x = np.arange(-2*np.pi, 2*np.pi, 0.1)
fig = plt.figure(1)
ax = fig.add_subplot(111)
ax.plot(x, np.sin(x), label='Sine')
ax.plot(x, np.cos(x), label='Cosine')
ax.plot(x, np.arctan(x), label='Inverse tan')
lgd = ax.legend(loc=9, bbox_to_anchor=(0.5,0))
ax.grid('on')
Beachten Sie, dass sich das endgültige Etikett 'Inverse Tan' tatsächlich außerhalb des Zahlenfelds befindet (und schlecht abgeschnitten aussieht - keine Veröffentlichungsqualität!)
Schließlich wurde mir gesagt, dass dies in R und LaTeX normal ist, daher bin ich ein wenig verwirrt, warum dies in Python so schwierig ist ... Gibt es einen historischen Grund? Ist Matlab in dieser Angelegenheit genauso arm?
Ich habe die (nur geringfügig) längere Version dieses Codes auf Pastebin http://pastebin.com/grVjc007
tight_layout()
sollte geändert werden, um Legenden zu berücksichtigen.