默认情况下,matplotlib将轴标签绘制在轴的中心。我想以这样的方式移动标签,使其与轴的末端对齐,包括水平轴和垂直轴。例如,对于水平轴,我想看到:
+--------------------+
| |
| |
| |
| |
| |
+--------------------+
label
是否可以使用matplotlib的全局设置来完成它?
答案 0 :(得分:17)
好的,我会单独留下我的其他答案(1),但这是好的
...
plt.xlabel('x_description', horizontalalignment='right', x=1.0)
plt.ylabel('y_description', horizontalalignment='right', y=1.0)
...
正如您所看到的,没有更多魔术数字,并适用于xlabel
和ylabel
。
请注意,在这两种情况下,我们都会更改水平对齐,原因是当我第一次更改ylabel
中的垂直对齐时,我最终会清楚这些...
(1)因为获取对象,修改该对象并将其设置回来的想法本身就是一个好主意,不是吗?
答案 1 :(得分:4)
从 v3.3 开始,您现在可以使用 loc
和 set_xlabel
的 set_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)
答案 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
位置...考虑到这个想法,理智的程序通常就像
axes.xaxis
方法获取对象.get_object(...)
方法在我们的情况下,我们制作绘图,然后我们得到当前轴.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
数据结构,但我没有发现任何有用的内容。当然,这并不意味着它是不可能的,只是我看不到可行的解决方案。