matplotlib获取轴相对刻度位置

时间:2015-01-13 01:31:55

标签: python matplotlib axes

我知道我可以通过ax.get_yticks()得到我的y-ticks的位置(顺便说一下,这是获得它们的最佳/正确方法吗?)。但是我需要相对于轴限制的刻度位置(即,在0和1之间)。最好的方法是什么?我尝试了ax.get_yticks(transform=ax.transAxes),但无效。

1 个答案:

答案 0 :(得分:4)

这种转变可以很容易地手工完成:

y_min, y_max = ax.get_ylim()
ticks = [(tick - y_min)/(y_max - y_min) for tick in ax.get_yticks()]

<强>更新

要使用日志比例,我们需要使用matplotlib.transforms。但是变换只能用(x,y)点,所以我们首先需要用一些x坐标(例如,零)补充y-ticks:

crd = np.vstack((np.zeros_like(ax.get_yticks()), ax.get_yticks())).T

然后我们可以将数据坐标转换为显示然后转换到轴并转换y列:

ticks = ax.transAxes.inverted().transform(ax.transData.transform(crd))[:,1]