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

6

我想使用Matplotlib创建信息图表,并希望将所有y轴刻度标签左对齐。

enter image description here

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

我尝试使用Axes.set_yticklabels来实现,但我不知道该如何做。

3个回答

4

你尝试过对坐标轴上的每个刻度使用set_horizontalalignment()吗?

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

2
谢谢,这个可以用,但是标签现在与线重叠了 - 最好使用 ax.text() 来获得更多的灵活性(就像 @Arne 之前指出的那样)。图片:https://i.imgur.com/BJXAHKc.png - Alex

2

一种灵活的方法是使用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')

标签对齐示例

只需根据您最长的标签调整偏移量(如上例中的-0.8)即可。


0

选择适合您标签列表的填充方式

ax.tick_params(pad=25)    
ax.set_yticklabels(labels, ha='left')

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接