Я рисую двумерный вид космической орбиты с использованием matplotlib. На этой орбите я идентифицирую и отмечаю определенные события, а затем перечисляю эти события и соответствующие даты в легенде. Прежде чем сохранять фигуру в файл, я автоматически нахожусь на моем участке орбиты, что приводит к тому, что легенда будет напечатана непосредственно поверх моего сюжета. То, что я хотел бы сделать, после автомасштабирования, как-то узнать ширину моей легенды, а затем расширить мой xaxis, чтобы «освободить место» для легенды в правой части сюжета. Концептуально, что-то вроде этого;Autoscale a matplotlib Оси, чтобы освободить место для легенды
# ... code that generates my plot up here, then:
ax.autoscale_view()
leg = ax.get_legend()
leg_width = # Somehow get the width of legend in units that I can use to modify my axes
xlims = ax.get_xlim()
ax.set_xlim([xlims[0], xlims[1] + leg_width])
fig.savefig('myplot.ps',format='ps')
Основная проблема у меня в том, что ax.set_xlim()
принимает «данные» конкретные значения, в то время как leg.get_window_extent
отчетов в окне пикселей (я думаю), и даже, что только после того, как холст был нарисован, так что я не знаю, как я могу получить легенду «ширина» таким образом, чтобы я мог использовать аналогичное выше.