Znam następujące pytania:
Savepl Matplotlib z legendą poza fabułą
Jak wykluczyć legendę z fabuły
Wydaje się, że odpowiedzi na te pytania mają luksus polegający na tym, że mogą bawić się dokładnie skurczeniem osi, aby legenda pasowała.
Zmniejszenie osi nie jest jednak idealnym rozwiązaniem, ponieważ powoduje zmniejszenie danych i utrudnienie interpretacji; szczególnie gdy jest złożony i dzieje się wiele rzeczy ... dlatego potrzebna jest duża legenda
Przykład złożonej legendy w dokumentacji pokazuje, że jest to konieczne, ponieważ legenda na ich wykresie faktycznie całkowicie zasłania wiele punktów danych.
http://matplotlib.sourceforge.net/users/legend_guide.html#legend-of-complex-plots
To, co chciałbym móc zrobić, to dynamicznie powiększać rozmiar pudełka z figurkami, aby uwzględnić legendę rozwijających się figur.
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')
Zwróć uwagę, że końcowa etykieta „Inverse tan” faktycznie znajduje się poza ramką z rysunkami (i wygląda na źle odciętą - 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 istnieje powód historyczny? Czy Matlab jest równie słaby w tej sprawie?
Mam (tylko nieznacznie) dłuższą wersję tego kodu na pastebin http://pastebin.com/grVjc007
tight_layout()
należy zmienić, aby uwzględnić legendy.