matplotlib 中绘图内的刻度标签

2 python matplotlib

我有一个条形图,其中“y”轴上的刻度标签在外面。 示例 但是,我想让条形内的 ylabels 向左对齐。有没有办法做到这一点?这是代码:

fig, ax = plt.subplots()

# Example data
people = ('Tom', 'Dick', 'Harry', 'Slim', 'Jim')
y_pos = np.arange(len(people))
performance = 3 + 10 * np.random.rand(len(people))
error = np.random.rand(len(people))

ax.barh(y_pos, performance, xerr=error, align='center',
        color='green', ecolor='black')
ax.set_yticks(y_pos)
ax.set_yticklabels(people)
ax.invert_yaxis()  # labels read top-to-bottom
ax.set_xlabel('Performance')
ax.set_title('How fast do you want to go today?')

plt.show()
Run Code Online (Sandbox Code Playgroud)

如果我玩 tick_params:

ax.tick_params(axis='y', direction='in',pad=-5)
Run Code Online (Sandbox Code Playgroud)

我得到

这个

这不是我想要的,因为文本在下面并且仍然向右对齐。

Imp*_*est 6

这是设置正确参数的问题。

这已经为您提供了所需的图表。

在此处输入图片说明

但是,由于您似乎使用的是 seaborn-darkgrid 样式,因此标签位于栏杆后面。要将它们放在前面,您可以设置,

plt.rcParams["axes.axisbelow"] = "line"
Run Code Online (Sandbox Code Playgroud)

此外,关闭 y 网格可能是有意义的,否则会穿透文本标签。

plt.rcParams["axes.grid.axis"] ="x"
Run Code Online (Sandbox Code Playgroud)

在此处输入图片说明