對于簡單的條形圖,我希望一些 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))
添加回答
舉報
0/150
提交
取消