Spostando la legenda matplotlib al di fuori dell’asse viene tagliata dal riquadro della figura

| | | | |

Ho familiarità con le seguenti domande:

Matplotlib savefig con una legenda al di fuori della trama

Come togliere la leggenda dalla trama

Sembra che le risposte a queste domande abbiano il lusso di poter giocherellare con l'esatto restringimento del asse in modo che la legenda si adatti.

Rimpicciolire 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 su ... quindi necessita di una legenda grande

L'esempio di una legenda complessa nella documentazione ne dimostra la necessità perché la legenda nella loro trama in realtà oscura completamente più punti dati.

http://matplotlib.sourceforge.net/users/legend_guide.html#legend-of-complex-plots

Quello che vorrei essere in grado di fare è espandere dinamicamente le dimensioni del riquadro della figura per accogliere la legenda della figura 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="Seno") ax.plot(x, np.cos(x), label="Coseno") ax.plot(x, np.arctan(x), label="Abbronzatura inversa") lgd = ax.legend (loc=9, bbox_to_anchor=(0.5,0)) ax.grid("on") 

Nota come l'etichetta finale "Abbronzatura inversa" è effettivamente fuori dal riquadro della figura (e appare interruzione non corretta - non qualità di pubblicazione!) inserire la descrizione dell'immagine qui

Finalmente, ho mi è stato detto che questo è un comportamento normale in R e LaTeX, quindi sono un po' confuso perché questo è così difficile in Python... C'è un Motivo? Matlab è ugualmente scadente su questo argomento?

Ho la versione (solo leggermente) più lunga di questo codice su pastebin http://pastebin.com/grVjc007