Ruchoma legenda matplotlib poza osią powoduje jej odcięcie przez pole figury

Znam następujące pytania:

Matplotlib savefig z legendą poza fabułą

Jak usunąć legendę z fabuły

Wydaje się, że odpowiedzi w tych pytaniach mają luksus bycia w stanie bawić się z dokładnym zmniejszaniem osi, aby legenda pasowała.

Zmniejszenie osi nie jest jednak idealnym rozwiązaniem, ponieważ sprawia, że ​​dane są mniejsze, co w rzeczywistości utrudnia ich interpretację; szczególnie, gdy jego kompleks i wiele się dzieje ... stąd potrzeba dużej legendy

Przykład złożonej legendy w dokumentacji dowodzi tego, ponieważ legenda na ich wykresie w rzeczywistości całkowicie przesłania wiele punktów danych.

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

To, co chciałbym zrobić, to dynamicznie rozszerzyć rozmiar pola rysunku, aby dostosować się do legendy rozwijającej się figury.

<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>

Zwróć uwagę, że ostateczna etykieta „Inverse tan” znajduje się poza polem rysunku (i wygląda źle - nie jakość publikacji!)

W końcu powiedziano mi, że jest to normalne zachowanie w R i LaTeX, więc jestem trochę zdezorientowany, dlaczego jest to tak trudne w pythonie ... Czy jest jakiś historyczny powód? Czy Matlab jest równie ubogi w tej kwestii?

Mam (tylko nieznacznie) dłuższą wersję tego kodu na pastebinhttp://pastebin.com/grVjc007

questionAnswers(3)

yourAnswerToTheQuestion