我正在使用 matplotlib 绘制航天器轨道的 2D 视图。在这个轨道上,我识别并标记某些事件,然后在图例中列出这些事件和相应的日期。在将图形保存到文件之前,我会自动缩放我的轨道图,这会导致图例直接打印在我的图顶部。我想做的是,在自动缩放之后,以某种方式找出我的图例的宽度,然后扩展我的 xaxis 以为图右侧的图例“腾出空间”。从概念上讲,是这样的;
# ... 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
在窗口像素中报告(我认为),甚至只有在画布绘制之后,所以我不确定如何获得图例“宽度”,我可以使用类似于上面的方式。