在matplotlib中的情节内的Ticklabels

时间:2018-03-17 11:35:57

标签: python matplotlib

我有一个条形图,'y'轴上的刻度标签在外面。 Example 但是,我希望条形图中的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()

如果我玩tick_params:

ax.tick_params(axis='y', direction='in',pad=-5)

我得到了

this

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

1 个答案:

答案 0 :(得分:1)

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

  • 为ticklabels设置了对齐,

    ax.set_yticklabels(people, horizontalalignment = "left")
    
  • 填充需要更大,例如pad = -15将标签放在轴内。

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

enter image description here

然而,由于您似乎使用了seaborn-darkgrid样式,标签位于条形图后面。要把它们放在前面你可以设置,

plt.rcParams["axes.axisbelow"] = "line"

此外,它可能对turn the y grid off有意义,否则会通过文本标签进行攻击。

plt.rcParams["axes.grid.axis"] ="x"

enter image description here