Estoy familiarizado con las siguientes preguntas:
Matplotlib savefig con una leyenda fuera de la trama
Cómo sacar la leyenda de la trama
Parece que las respuestas en estas preguntas tienen el lujo de poder jugar con la reducción exacta del eje para que la leyenda encaje.
Sin embargo, la reducción de los ejes no es una solución ideal porque hace que los datos sean más pequeños y que en realidad sea más difícil de interpretar; particularmente cuando es complejo y hay muchas cosas sucediendo ... por lo tanto, necesita una gran leyenda
El ejemplo de una leyenda compleja en la documentación demuestra la necesidad de esto porque la leyenda en su diagrama en realidad oscurece por completo 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.
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')
Observe cómo la etiqueta final 'Inverse tan' está realmente fuera del cuadro de la figura (y se ve muy mal, ¡no es la 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? ¿Matlab es igualmente pobre en este asunto?
Tengo la versión (solo un poco) más larga de este código en pastebin http://pastebin.com/grVjc007
tight_layout()
debe cambiarse para tener en cuenta las leyendas.