我知道可以通过ax.get_yticks()
来获取y轴刻度的位置(顺便问一下,这是获取它们的最佳/正确方法吗?)。但是我需要相对于坐标轴限制(即在0和1之间)的刻度位置。最好的方法是什么?我尝试了ax.get_yticks(transform=ax.transAxes)
,但它不起作用。
我知道可以通过ax.get_yticks()
来获取y轴刻度的位置(顺便问一下,这是获取它们的最佳/正确方法吗?)。但是我需要相对于坐标轴限制(即在0和1之间)的刻度位置。最好的方法是什么?我尝试了ax.get_yticks(transform=ax.transAxes)
,但它不起作用。
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坐标(例如0)来补充y刻度:
crd = np.vstack((np.zeros_like(ax.get_yticks()), ax.get_yticks())).T
然后我们可以将数据坐标转换为显示坐标,然后转换为轴坐标,并取其y
列:
ticks = ax.transAxes.inverted().transform(ax.transData.transform(crd))[:,1]