如何将轴标签对齐到

时间:2016-07-04 13:34:28

标签: matplotlib

默认情况下,matplotlib将轴标签绘制在轴的中心。我想以这样的方式移动标签,使其与轴的末端对齐,包括水平轴和垂直轴。例如,对于水平轴,我想看到:

+--------------------+
|                    |
|                    |
|                    |
|                    |
|                    |
+--------------------+
                 label

是否可以使用matplotlib的全局设置来完成它?

3 个答案:

答案 0 :(得分:17)

好的,我会单独留下我的其他答案(1),但这是好的

...
plt.xlabel('x_description', horizontalalignment='right', x=1.0)
plt.ylabel('y_description', horizontalalignment='right', y=1.0)
...

正如您所看到的,没有更多魔术数字,并适用于xlabelylabel

请注意,在这两种情况下,我们都会更改水平对齐,原因是当我第一次更改ylabel中的垂直对齐时,我最终会清楚这些...

(1)因为获取对象,修改该对象并将其设置回来的想法本身就是一个好主意,不是吗?

答案 1 :(得分:4)

v3.3 开始,您现在可以使用 locset_xlabelset_ylabel 参数设置这些:

import matplotlib.pyplot as plt

# Left plot
options = ['left', 'center', 'right']
fig, axs = plt.subplots(len(options), 1, constrained_layout=True)

for ax, loc in zip(axs, options):
    ax.plot([1, 2, 3])
    ax.set_xlabel(f'xlabel loc={loc!r}', loc=loc)
# Right plot
options = ['bottom', 'center', 'top']
fig, axs = plt.subplots(1, len(options), constrained_layout=True)

for ax, loc in zip(axs, options):
    ax.plot([1, 2, 3])
    ax.set_ylabel(f'ylabel loc={loc!r}', loc=loc)
<头>
enter image description here enter image description here

答案 2 :(得分:2)

一个特殊的解决方案,它至少可以说是我不太了解的神奇值exec('python s1 '); //time of execution is 2800s sleep(3000); // i want to be sure that the first one is finished shell_exec('php /home/Parik/s2.php');

25

更明智的方法是使用plt.xlabel('pollo', horizontalalignment='right', position=(1,25)) 所选择的y位置...考虑到这个想法,理智的程序通常就像

  1. 使用父容器的axes.xaxis方法获取对象
  2. 修改对象
  3. 使用其.get_object(...)方法
  4. 更新父级

    在我们的情况下,我们制作绘图,然后我们得到当前轴.set_object(...),其中包含ax,其中包含我们想要修改其位置和对齐的xaxis

    label

    关于直接对... plt.xlabel('...') ... ax = plt.gca() label = ax.xaxis.get_label() x_lab_pos, y_lab_pos = label.get_position() label.set_position([1.0, y_lab_pos]) label.set_horizontalalignment('right') ax.xaxis.set_label(label) ... plt.show() 的默认值进行操作,我浏览了matplotlib数据结构,但我没有发现任何有用的内容。当然,这并不意味着它是不可能的,只是我看不到可行的解决方案。