默认情况下,matplotlib将轴标签绘制在轴的中心.我想以这样的方式移动标签,使其与轴的末端对齐,包括水平轴和垂直轴.例如对于水平轴我想看到:
+--------------------+
| |
| |
| |
| |
| |
+--------------------+
label
Run Code Online (Sandbox Code Playgroud)
是否可以使用matplotlib的全局设置来完成它?
gbo*_*ffi 18
好的,我会单独留下我的其他答案(1),但这是好的
...
plt.xlabel('x_description', horizontalalignment='right', x=1.0)
plt.ylabel('y_description', horizontalalignment='right', y=1.0)
...
Run Code Online (Sandbox Code Playgroud)
正如你所看到的,没有更多神奇的数字,并且适用于xlabel和ylabel.
请注意,在这两种情况下,我们都要更改水平对齐,原因是我在第一次更改垂直对齐时最终清楚了ylabel...
(1)因为获取对象,修改该对象并将其设置回来的想法本身就是一个好主意,不是吗?
一个临时解决方案,它引入了25我不太了解的魔法值,至少可以说是
plt.xlabel('pollo', horizontalalignment='right', position=(1,25))
Run Code Online (Sandbox Code Playgroud)
更明智的方法是使用选择的任何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()
Run Code Online (Sandbox Code Playgroud)
关于直接作用于matplotlib的默认值,我浏览了plt.rcParams数据结构,但没有发现任何有用的东西。当然,这并不意味着这是不可能的,只是我看不到可行的解决方案。
从v3.3 开始,您现在可以使用andloc参数设置这些:set_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)
Run Code Online (Sandbox Code Playgroud)
# 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)
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
12464 次 |
| 最近记录: |