ha='right'
不足以在视觉上将标签与刻度对齐:
- 对于
rotation=45
,同时 ha='right'
使用和rotation_mode='anchor'
ScaledTranslation()
对于其他角度,请使用 a
如果旋转角度大约为 45°,请ha='right'
结合rotation_mode='anchor'
:
ax.set_xticks(ticks)
ax.set_xticklabels(labels, rotation=45, ha='right', rotation_mode='anchor')
或者在 matplotlib 3.5.0+ 中,一次设置刻度和标签:
ax.set_xticks(ticks, labels, rotation=45, ha='right', rotation_mode='anchor')
如果旋转角度更极端(例如,70°),或者您只是想要更细粒度的控制,则锚定效果不佳。相反,应用线性变换:
ax.set_xticks(ticks)
ax.set_xticklabels(labels, rotation=70)
# create -5pt offset in x direction
from matplotlib.transforms import ScaledTranslation
dx, dy = -5, 0
offset = ScaledTranslation(dx / fig.dpi, dy / fig.dpi, fig.dpi_scale_trans)
# apply offset to all xticklabels
for label in ax.xaxis.get_majorticklabels():
label.set_transform(label.get_transform() + offset)