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 只适合绘图窗口的一个大小。

对于默认窗口大小,文本在我想要的位置:

enter image description here

但是一旦我放大了绘图窗口,我的文字就会迷失在无人区:

enter image description here

我尝试了 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()

enter image description here

请注意,-5 也只是一个估计值,您可能还想自己找到最佳值。但是,这样做之后,只要标签的填充和字体大小不变,它就会保持不变。

关于python - Matplotlib:将文本与轴刻度对齐,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49384526/

相关文章:

python - 在哪里为 Django 中的外部服务实例化客户端?

python - 3D 直方图上的错误跟踪器值

python - Matplotlib Colorbar 更改刻度标签和定位器

python - 使用 mplcursors 在同一图表上为多个数据集添加标签

python - 我可以将计数器反转为没有倍数的列表列表吗?

python selenium清除缓存和cookie

python - 如何避免使用 gevent 在 python 中阻塞代码?

java - 如果 py4j JVM 正在运行,在 python 中测试的最佳方法?

python - 尽管 rasterized=True,为什么 matplotlib 图形文件大小很大?

python - 如何将每个样本 1px 绘制到图像上?/DPI 测量的方向是什么?