我想在图的y轴旁边显示一个自定义文本,如以下最小示例所示:
import matplotlib.pyplot as plt
fig, ax = plt.subplots()
ax.text(-0.05, 0.5, '$x$')
plt.show()
水平对齐0.05
是我通过反复试验弄清楚的。不幸的是,0.05
只适合一种大小的绘图窗口。
对于默认窗口大小,文本位于所需位置:
但是,一旦我放大绘图窗口,我的文本就会迷失在无人区:
我尝试了ax.text(-ax.yaxis.get_tick_padding, 0.5, '$x$')
,但填充似乎是在不同的单位测量。
如何确保对于每个窗口大小,文本与y轴的距离相同?
2条答案
按热度按时间eqzww0vc1#
你可以用
ax.annotate
代替ax.text
,因为它允许更多的自由度,特别是它允许在一些坐标系中注解一个点,文本在不同的坐标中偏移到那个位置。下面将在由
yaxis_transform
给定的坐标系中的位置(0, 0.5)
处创建注解,即(axes coordinates, data coordinates)
。然后文本本身从该位置偏移-5
点。请注意,
-5
也只是一个估计值,您可能会再次希望自己找到最佳值,但是,这样做之后,只要标签的填充和字体大小不变,该值将保持不变。uoifb46i2#
当刻度长度或填充已更改时,您可以通过查询其中一个刻度来找出确切的偏移。刻度具有“填充”(标签和刻度线之间)和“填充”(刻度线的长度),两者都以“点”为单位。在默认设置中,两者都是
3.5
,填充为7
。