Python 如何在matplotlib中将标签添加到水平条形图?

Python 如何在matplotlib中将标签添加到水平条形图?,python,pandas,matplotlib,Python,Pandas,Matplotlib,如何在matplotlib中将标签添加到水平条形图 大家好,我是matplotlib和python的新手,我想再次问这个问题以获得一些帮助,看看是否有比我找到的当前解决方案更容易的方法为每个条所表示的计数添加标签 以下是我编写的代码: from matplotlib.pyplot import figure figure(num=None, figsize=(8, 24), dpi=80, facecolor='w', edgecolor='k') df['Name'].value_counts

如何在matplotlib中将标签添加到水平条形图

大家好,我是matplotlib和python的新手,我想再次问这个问题以获得一些帮助,看看是否有比我找到的当前解决方案更容易的方法为每个条所表示的计数添加标签

以下是我编写的代码:

from matplotlib.pyplot import figure
figure(num=None, figsize=(8, 24), dpi=80, facecolor='w', edgecolor='k')
df['Name'].value_counts()[:80].plot(kind='barh')
它工作的很好,除了显示标签旁边的酒吧位

我在这里查看了如何添加标签,因此我将代码更改为:

x = df['Name']
y = df['Name'].value_counts(ascending=True)
fig, ax = plt.subplots(figsize=(18,20))    
width = 0.75 # the width of the bars 
ind = np.arange(len(y))  # the x locations for the groups
ax.barh(ind, y, width, color="blue")
ax.set_yticks(ind+width/2)
ax.set_yticklabels(y, minor=False)
plt.title('Count of supplies')
plt.xlabel('Count')
plt.ylabel('ylabel')

for i, v in enumerate(y):
    ax.text(v + 100, i + 0, str(v), color='black', fontweight='bold')
但是,现在我的名字与这些条没有关联,它们在数据框中的显示顺序也一样。是否有一种方法可以简单地更改第一个代码,或使其在第二次尝试时与条形图关联的名称正确(与它们标记的条形图分组…)

图片分类解释我的问题: (这不是一个真正的答案,因为评论中已经给出了答案。只是展示了它的样子。)

使用y的索引作为条形图的索引,应将y标签放在相应条形图旁边的正确位置。没有必要操纵y形标签。条形标签可以左对齐并垂直居中。可以稍微移动右侧的x限制,以便为最长条的标签留出空间

从matplotlib导入pyplot作为plt
将numpy作为np导入
作为pd进口熊猫
df=pd.DataFrame({'Name':np.random.choice(list('aabbbcccdeef'),20000)})
y=df['Name']。值_计数(升序=False)
图,ax=plt.子批次(图尺寸=(12,5))
ax.barh(y.指数,y,高度=0.75,颜色=“蓝”)
产品名称(“供应数量”)
plt.xlabel('计数')
plt.ylabel('ylabel'))
_,xmax=plt.xlim()
plt.xlim(0,xmax+300)
对于枚举(y)中的i,v:
ax.text(v+100,i,str(v),color='black',fontwweight='bold',fontsize=14,ha='left',va='center')
plt.show()

您显示的图片不是问题代码的输出。请使用并显示您得到的确切输出。要创建类似的数据帧:
df=pd.dataframe({'Name':np.random.choice(list('aabbcccdeef'),5000)}
只需调用
ax.barh(y.index,y,width,color=“blue”)
。省去y记号的操作,因为它们应该是不变的。这回答了你的问题吗?