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

w3nuxt5m  于 2023-03-03  发布在  其他
关注(0)|答案(3)|浏览(177)

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

我想把所有的刻度标签移到左边-我想让它们都从District of Columbia的x位置开始。
我试着用Axes.set_yticklabels来做这件事,但是我不知道怎么做。

k5hmc34c

k5hmc34c1#

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

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

34gzjxbg2#

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

gdx19jrr

gdx19jrr3#

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

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

相关问题