Мне знакомы следующие вопросы:
Matplotlib savefig с легендой вне сюжета
Похоже, что ответы на эти вопросы имеют роскошь быть способным возиться с точным сокращением оси, чтобы легенда соответствовала.
Сокращение осей, однако, не является идеальным решением, поскольку оно уменьшает количество данных, что делает его более трудным для интерпретации; особенно когда его сложность и есть много вещей, происходящих... следовательно, требуется большая легенда
Пример сложной легенды в документации демонстрирует необходимость этого, потому что легенда в их сюжете фактически полностью закрывает несколько точек данных.
http://matplotlib.sourceforge.net/users/legend_guide.html#legend-of-complex-plots
То, что я хотел бы сделать, - это динамически расширить размер окна с фигурами, чтобы приспособить расширяющуюся фигуру.
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')
Обратите внимание, как окончательная метка "Обратный загар" фактически находится за рамкой фигуры (и выглядит плохо срезанной, а не качеством публикации!)
Наконец, мне сказали, что это нормальное поведение в R и LaTeX, поэтому я немного смущен, почему это так сложно в python... Есть ли историческая причина? Является ли Matlab одинаково бедным по этому поводу?
У меня есть (только немного) более длинная версия этого кода на pastebin http://pastebin.com/grVjc007