我想使用Matplotlib创建信息图表,并希望将所有y轴刻度标签左对齐。
我想将所有刻度标签移动到左侧 - 我希望它们都从与District of Columbia
相同的x位置开始。
我尝试使用Axes.set_yticklabels
来实现,但我不知道该如何做。
我想使用Matplotlib创建信息图表,并希望将所有y轴刻度标签左对齐。
我想将所有刻度标签移动到左侧 - 我希望它们都从与District of Columbia
相同的x位置开始。
我尝试使用Axes.set_yticklabels
来实现,但我不知道该如何做。
你尝试过对坐标轴上的每个刻度使用set_horizontalalignment()
吗?
for tick in ax.yaxis.get_majorticklabels():
tick.set_horizontalalignment("left")
一种灵活的方法是使用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
)即可。
选择适合您标签列表的填充方式
ax.tick_params(pad=25)
ax.set_yticklabels(labels, ha='left')
ax.text()
来获得更多的灵活性(就像 @Arne 之前指出的那样)。图片:https://i.imgur.com/BJXAHKc.png - Alex