猿问

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

对于简单的条形图,我希望一些 x 刻度标签位于 x 轴下方(对于正 y 值),而其他标签位于 x 轴上方(对于负 y 值)。

我看到,根据文档,可以将字符串作为参数传递以matplotlib.axes.Axes.set_xticklabel更改垂直对齐方式,但这是一个笼统的应用程序。

如何实现特定 x-tick 标签的任意定位?

犯罪嫌疑人X
浏览 113回答 1
1回答

汪汪一只猫

您可以修改 for 循环中标签的位置/旋转。最初,我认为更改旋转点就足够了,但标签固定在刻度线的尖端,因此结果不是最佳的。这是我的代码。您可能需要调整 y 位置的正负以获得所需的对齐方式:N = 10h = 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())):&nbsp; &nbsp; if g<0:&nbsp; &nbsp; &nbsp; &nbsp; t.set_ha('left')&nbsp; &nbsp; &nbsp; &nbsp; t.set_va('bottom')&nbsp; &nbsp; else:&nbsp; &nbsp; &nbsp; &nbsp; t.set_ha('right')&nbsp; &nbsp; &nbsp; &nbsp; t.set_va('top')&nbsp; &nbsp; t.set_rotation_mode('anchor')&nbsp; &nbsp; t.set_rotation(45)&nbsp; &nbsp; t.set_transform(ax.transData)&nbsp; &nbsp; t.set_position((i,0))
随时随地看视频慕课网APP

相关分类

Python
我要回答