【发布时间】:2021-10-29 06:03:38
【问题描述】:
我想为 twinx(右侧)轴的刻度标签使用“west”锚点。例如,看下面的图,我希望刻度标签的左侧与右轴对齐。
我尝试了以下几件事,但无济于事。
import matplotlib.pyplot as plt
X = [1,2,3]
fig, ax = plt.subplots()
ax.plot(X)
ax.set_ylim([1,3])
ax.set_yticks(X)
axR = ax.twinx()
axR.set_ylim(ax.get_ylim())
axR.set_yticks(ax.get_yticks())
axR.set_yticklabels(['-1.00', '2.00', '3.00'], ha='right')
# axR.set_yticklabels(['-1.00', '2.00', '3.00'], ha='right', bbox_to_anchor='W')
# axR.set_yticklabels(['-1.00', '2.00', '3.00'], ha='right', bbox=dict(bbox_to_anchor='W'))
# bbox can have args from: https://matplotlib.org/stable/api/_as_gen/matplotlib.patches.FancyBboxPatch.html#matplotlib.patches.FancyBboxPatch
fig.show()
【问题讨论】:
-
试试这个:
axR.set_yticklabels(['-1.00', '2.00', '3.00'], ha='left') -
我特别想要
ha='right',但要将勾选标签框的左侧“固定”到轴上。 -
添加这个。
axR.tick_params(axis='y', which='major', pad=-5)这是你想要达到的目标吗? -
这有点笨拙,因为填充必须根据 y 刻度的位数而改变。这里有一个明确的解决方案,那就是改变边界框锚点。这显然是可以实现的,因为在内部某处
matplotlib可能使用east用于左侧 x 轴,north用于底部 x 轴。