Matplotlib轴文本坐标不一致?

时间:2015-01-11 22:28:33

标签: python-2.7 matplotlib

我正在编写一段代码来自动对齐可变数量的子图的x轴标签。当我开始手动设置标签位置时,我检查确保我可以从一组坐标转换到另一组坐标而不改变任何东西,使用这样的代码片段:

# xaxes is a list of Axes objects
textCoords = [ax.xaxis.get_label().get_position() for ax in xaxes]
newCoords = [ax.transAxes.inverted().transform(ax.xaxis.get_label().\
    get_transform().transform(c)) for ax,c in zip(xaxes,textCoords)]
for ax,c in zip(xaxes,newCoords): ax.xaxis.set_label_coords(*c)

理论上,这段代码不会改变任何坐标;它只获取每个标签的坐标,使用Text对象的内部存储变换将其映射到Axes坐标,然后设置位置。然而,运行此代码完全删除了我的标签,并进行了一些实验,表明它们偏离了图的底部边缘。

我是否只是误解了这里涉及的变换?

1 个答案:

答案 0 :(得分:0)

您正确理解变换,但在显示绘图之前使用显示坐标时需要注意。

简短的回答是,在上面的代码段之前拨打plt.draw()可以解决您的问题。

您正尝试通过显示坐标链接不同的轴显示系统。但是,在第一次绘制绘图之前,渲染器尚未完全初始化,并且显示坐标没有太大意义。

你能详细说明你想做什么吗?可能有一种更简单的方法。

或者,如果您想避免额外的draw,您可以在绘制绘图之前通过图形坐标链接事物。 (无论如何,它们都很明确。)