繁体   English   中英

matplotlib中的图内的刻度标签

[英]Ticklabels inside a plot in matplotlib

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

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)

我懂了

这个

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

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

  • 已为刻度标签设置了对齐方式,

     ax.set_yticklabels(people, horizontalalignment = "left") 
  • 填充需要大得多,例如pad = -15才能使标签位于轴内。

这已经可以为您提供所需的图形。

在此处输入图片说明

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

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

另外, 关闭y网格可能是有意义的,否则将贯穿文本标签。

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

在此处输入图片说明

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM