Python Matplotlib:将文本与轴标记对齐
我想在绘图的y轴旁边显示一个自定义文本,如以下示例所示:Python Matplotlib:将文本与轴标记对齐,python,matplotlib,Python,Matplotlib,我想在绘图的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_ti
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$)
,但padding似乎是以不同的单位度量的
如何确保每个窗口大小的文本与y轴的距离相同?您可以使用
ax.annotate
而不是ax.text
,因为它允许更多的自由度。具体地说,它允许在某个坐标系中注释一个点,并将文本偏移到不同坐标系中的该位置
以下内容将在由yaxis\u变换
给出的坐标系中的(0,0.5)
位置创建注释,即(轴坐标,数据坐标)
。然后,文本本身从该位置偏移-5
点
import matplotlib.pyplot as plt
fig, ax = plt.subplots()
ax.annotate('$x$', xy=(0, 0.5), xycoords=ax.get_yaxis_transform(),
xytext=(-5,0), textcoords="offset points", ha="right", va="center")
plt.show()
请注意,
-5
也只是一个估计值,您可能还想自己找到最佳值。但是,这样做之后,只要标签的填充和字体大小不变,这将保持不变 有关如何更新批注的信息,请参见。谢谢!不过,这些解决方案对我不起作用set_position()
和.xy
都设置xy
参数并覆盖xytext
设置。如何在动画中更改xy
,而不更改xytext
;或者如何更新xytext
?如链接答案所示,解决方案有效。因此,如果你不这样做,你需要看到重现问题的代码——我认为这是一个新问题。