水平条图中的中心yticklabel-Matplotlib

时间:2018-10-14 22:32:11

标签: python matplotlib

是否可以将yticklabel居中于具有负值和正值的水平小节的中间?我希望各种y值的名称(存储在称为“名称”的列表中)出现在小节的中间(以x = 0为中心)。这可能吗?

演示代码:

names = [1, 2, 3]
fig, axs = plt.subplots(3,1, figsize=(12, 24)) 
ind = np.arange(len(names))  # the x locations for the groups
width = 0.35       # the width of the bars
axs[0].barh(ind, [3, 4, 5], width, color='red', label='demo')
axs[0].set(yticks=ind + width, yticklabels=names)

plt.show()

1 个答案:

答案 0 :(得分:1)

你很近。您只需要使用align=center,然后按的方式重命名刻度标签,而无需将刻度移动0.5。我将coef_names替换为names,因为前者未在您提供的代码中定义。

names = [1, 2, 3]
fig, axs = plt.subplots(3,1, figsize=(12, 24)) 
ind = np.arange(len(names))  # the x locations for the groups
width = 0.35       # the width of the bars
axs[0].barh(ind, [3, 4, 5], width, color='red', align='center',label='demo')
axs[0].set(yticks=ind , yticklabels=names)

enter image description here