为了账号安全,请及时绑定邮箱和手机立即绑定

x 刻度和标签的自定义定位

x 刻度和标签的自定义定位

犯罪嫌疑人X 2023-12-09 15:50:35
对于简单的条形图,我希望一些 x 刻度标签位于 x 轴下方(对于正 y 值),而其他标签位于 x 轴上方(对于负 y 值)。我看到,根据文档,可以将字符串作为参数传递以matplotlib.axes.Axes.set_xticklabel更改垂直对齐方式,但这是一个笼统的应用程序。如何实现特定 x-tick 标签的任意定位?
查看完整描述

1 回答

?
汪汪一只猫

TA贡献1898条经验 获得超8个赞

您可以修改 for 循环中标签的位置/旋转。最初,我认为更改旋转点就足够了,但标签固定在刻度线的尖端,因此结果不是最佳的。


这是我的代码。您可能需要调整 y 位置的正负以获得所需的对齐方式:


N = 10

h = np.linspace(-10,10,N)

xticks = [f'test #{n}' for n in range(N)]


fig, ax = plt.subplots()

ax.spines['bottom'].set_position('zero')

ax.bar(range(N),h)

ax.set_xticks(range(N))

ax.set_xticklabels(xticks)


for i,(g,t) in enumerate(zip(h,ax.get_xticklabels())):

    if g<0:

        t.set_ha('left')

        t.set_va('bottom')

    else:

        t.set_ha('right')

        t.set_va('top')

    t.set_rotation_mode('anchor')

    t.set_rotation(45)

    t.set_transform(ax.transData)

    t.set_position((i,0))

https://img1.sycdn.imooc.com/65741c71000198f605920440.jpg

查看完整回答
反对 回复 2023-12-09
  • 1 回答
  • 0 关注
  • 112 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信