我想在绘图的 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 轴的距离相同?
最佳答案
您可以使用 ax.annotate
而不是 ax.text
因为它允许更多的自由。具体来说,它允许在某个坐标系中注释一个点,并将文本偏移到不同坐标中的该位置。
以下将在 yaxis_transform
给出的坐标系中的位置 (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
也只是一个估计值,您可能还想自己找到最佳值。但是,这样做之后,只要标签的填充和字体大小不变,它就会保持不变。
关于python - Matplotlib:将文本与轴刻度对齐,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49384526/