我想在我的情节的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轴的距离相同?
答案 0 :(得分:2)
您可以使用ax.annotate
代替ax.text
,因为它允许更多的自由。具体来说,它允许在某个坐标系中注释一个点,文本在不同坐标中偏移到该位置。
以下内容将在(0, 0.5)
给出的坐标系中的yaxis_transform
位置创建注释,即(axes coordinates, data coordinates)
。然后,文本本身会被此位置的-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
也只是估算值,您可能希望自己再次找到最佳价值。但是,只要标签的填充和字体大小没有改变,这样做就会保持不变。