首页 > 解决方案 > Matplotlib:当旋转 xticks 出现标签之间不均匀的间隙时

问题描述

这很奇怪。旋转 -90º 时,所有标签均等间距并位于其位置:

feat_names = ["totalUniqueCustomerPhoneNumberLocal_f",
                "userIdentitty_f",
                "EMAIL_WEEKS_1_f",
                "length_f",
                "totalValidations_f",
                "amount_per_purchase_k",
                "amount_f"]

X1 = np.array([0.18790969, 0.18208303, 0.15003641, 0.11143482, 0.07428987,
       0.06846322, 0.06773489])

plt.figure()
plt.title("Feature importances")
plt.bar(range(X1.shape[0]), X1,color="r", align="center")
plt.xticks(range(X1.shape[0]), feat_names, rotation = -90)
plt.xlim([-1, X1.shape[0]])
plt.show()

脚本的结果

但是,我需要它们旋转 -45º,这就是发生的情况:

feat_names = ["totalUniqueCustomerPhoneNumberLocal_f",
                "userIdentitty_f",
                "EMAIL_WEEKS_1_f",
                "length_f",
                "totalValidations_f",
                "amount_per_purchase_k",
                "amount_f"]

X1 = np.array([0.18790969, 0.18208303, 0.15003641, 0.11143482, 0.07428987,
       0.06846322, 0.06773489])

plt.figure()
plt.title("Feature importances")
plt.bar(range(X1.shape[0]), X1,color="r", align="center")
plt.xticks(range(X1.shape[0]), feat_names, rotation = -45)
plt.xlim([-1, X1.shape[0]])
plt.show()

脚本2的结果

关于如何使标签在旋转-45º时开始与条形中心对齐的任何想法?

谢谢

标签: pythonmatplotlib

解决方案


水平对齐是通过horizontalalignment或其别名完成的ha

plt.xticks(..., rotation = -45, ha="left")

推荐阅读