Python matplotlib中轴标签文本顶部的位置是什么?

Python matplotlib中轴标签文本顶部的位置是什么?,python,matplotlib,font-size,axes,axis-labels,Python,Matplotlib,Font Size,Axes,Axis Labels,我正在尝试定位一些附加注释,以便与matplotlib图形中的轴标签文本对齐。作为记号和轴标签的字体大小以及注释的字体大小的函数,该位置是如何计算的 具体地说,给定一个图形,其x轴上有一组记号标签和一个轴标签,字体大小分别为tick\u font\u size和label\u font\u size,那么图形点中的垂直位置y会导致什么结果 ax.annotate('Some text', (x, y), va='top', ...) 将字体大小为注释大小为

我正在尝试定位一些附加注释,以便与matplotlib图形中的轴标签文本对齐。作为记号和轴标签的字体大小以及注释的字体大小的函数,该位置是如何计算的

具体地说,给定一个图形,其x轴上有一组记号标签和一个轴标签,字体大小分别为
tick\u font\u size
label\u font\u size
,那么图形点中的垂直位置
y
会导致什么结果

ax.annotate('Some text', (x, y), va='top', ...)
将字体大小为
注释大小为
“某些文本”
与轴标签垂直对齐


出于各种原因,我必须为此使用
annotate
,而
va='top'
是一个约束条件;我需要使用上面的字体大小信息——也就是说,我正在寻找表单的功能

y = f(tick_font_size, label_font_size, annotation_font_size)

图形点中的所有值(即,可用于
注释中的
textcoords='offset points'
)。这样的算法必须存在,因为
matplotlib
明确使用它来首先定位轴标签。

设置xlabel时返回对象。渲染图形并使用get_position获取标签的位置。从那里进行一些转换并添加注释

import numpy as np
import matplotlib.pyplot as plt

x = np.arange(10)
y = x**2

xlabel = plt.xlabel("test")
plt.plot(x, y)

ax = plt.gca()
fig = plt.gcf()
fig.draw(fig.canvas.get_renderer())

trans = xlabel.get_transform()
xpos, ypos = trans.transform(xlabel.get_position())  # convert to display coordinates
xpos, ypos = fig.transFigure.inverted().transform([xpos, ypos])  # convert to figure coordinates
ax.annotate('Some text', (xpos+0.05, ypos), xycoords='figure fraction', va="top")
plt.show()

“top”不是对的有效选项ha@M4rtini:正确;谢谢已修复。假设我刚安装了轴和标签的
ax
。如何获取
xlabel
?ax.get_xaxis().get_label()这很有用,但不是我想要的。我需要的是将
ax
tick\u font\u size
label\u font\u size
annotation\u font\u size
映射到将注释与轴标签对齐的
y
值的函数。(该函数存在,因为它被
matplotlib
用于定位轴标签。)