Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/340.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python Matplotlib:将文本与轴标记对齐_Python_Matplotlib - Fatal编程技术网

Python Matplotlib:将文本与轴标记对齐

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

我想在绘图的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$)
,但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
?如链接答案所示,解决方案有效。因此,如果你不这样做,你需要看到重现问题的代码——我认为这是一个新问题。