Mover la leyenda de matplotlib fuera del eje hace que se corte por el cuadro de figura

Estoy familiarizado con las siguientes preguntas:

Matplotlib savefig con una leyenda fuera de la trama

Cómo sacar a la leyenda de la trama.

Parece que las respuestas en estas preguntas tienen el lujo de poder jugar con el encogimiento exacto del eje para que la leyenda encaje.

Sin embargo, reducir los ejes no es una solución ideal porque reduce los datos, lo que hace que sea más difícil de interpretar; particularmente cuando es complejo y hay muchas cosas sucediendo ... por lo tanto, se necesita una gran leyenda

El ejemplo de una leyenda compleja en la documentación demuestra la necesidad de esto porque la leyenda en su trama en realidad oculta completamente múltiples puntos de datos.

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

Lo que me gustaría poder hacer es expandir dinámicamente el tamaño del cuadro de figura para acomodar la leyenda de la figura en expansión.

<code>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')
</code>

Observe cómo la etiqueta final 'Tango inverso' está realmente fuera de la caja de la figura (y se ve mal cortada, ¡no es calidad de publicación!

Finalmente, me han dicho que este es un comportamiento normal en R y LaTeX, así que estoy un poco confundido por qué esto es tan difícil en Python ... ¿Hay alguna razón histórica? ¿Es Matlab igualmente pobre en este asunto?

Tengo la versión (solo ligeramente) más larga de este código en pastebinhttp://pastebin.com/grVjc007

Respuestas a la pregunta(3)

Su respuesta a la pregunta