如何在matplotlib中对齐刻度标签?

时间:2020-07-09 10:44:03

标签: python matplotlib

我正在尝试使用matplotlib构建信息图表,我想将所有y轴的刻度标签左对齐。

enter image description here

我想将所有刻度标签移到左侧-我希望它们全部从与District of Columbia相同的x位置开始。

我尝试使用Axes.set_yticklabels来做到这一点,但是我不知道该怎么做。

2 个答案:

答案 0 :(得分:1)

一种灵活的方法是使用ax.text()分别绘制标签。这是一个简单的示例:

import matplotlib.pyplot as plt

y = [0, 1, 2]
width = [2, 2, 3]
labels = ['Colorado', 'Massachusetts', 'DC']

fig, ax = plt.subplots()
ax.barh(y=y, width=width)
ax.set_yticks(y)
ax.set_yticklabels([]) 

for i, yi in enumerate(y):
    ax.text(-0.8, yi, labels[i], horizontalalignment='left', verticalalignment='center')

label alignment example

只需根据您的最长标签调整偏移量(在上面的示例中为-0.8)。

答案 1 :(得分:1)

您是否尝试对轴上的每个刻度使用set_horizontalalignment()

for tick in ax.yaxis.get_majorticklabels():
    tick.set_horizontalalignment("left")