Conosco le seguenti domande:
Matplotlib savefig con una legenda fuori dalla trama
Come mettere la leggenda fuori dalla trama
Sembra che le risposte a queste domande abbiano il lusso di poter giocherellare con l'esatto restringimento dell'asse in modo che la leggenda si adatti.
Ridurre gli assi, tuttavia, non è una soluzione ideale perché rende i dati più piccoli rendendoli in realtà più difficili da interpretare; in particolare quando è complesso e ci sono molte cose in corso ... quindi necessita di una grande leggenda
L'esempio di una legenda complessa nella documentazione dimostra la necessità di ciò perché la legenda nel loro diagramma in realtà oscura completamente più punti dati.
http://matplotlib.sourceforge.net/users/legend_guide.html#legend-of-complex-plots
Quello che vorrei poter fare è espandere dinamicamente le dimensioni della scatola delle figure per adattarle alla legenda delle figure in espansione.
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')
Notate come l'etichetta finale 'Abbronzatura inversa' sia effettivamente fuori dalla scatola delle figure (e sembra gravemente tagliata, non di qualità di pubblicazione!)
Infine, mi è stato detto che questo è un comportamento normale in R e LaTeX, quindi sono un po 'confuso perché questo è così difficile in Python ... C'è una ragione storica? Matlab è altrettanto povero su questo argomento?
Ho la versione (solo leggermente) più lunga di questo codice su pastebin http://pastebin.com/grVjc007
tight_layout()
dovrebbe essere modificato per tener conto delle leggende.