使用 matplotlib bar 向多条形图中添加值

Adding values to multibar plot using matplotlib bar

我正在使用以下代码:

import numpy as np
import matplotlib.pyplot as plt

Women = [115, 215, 250, 200]
Men = [114, 230, 510, 370]

n=4
r = np.arange(n)
width = 0.25


plt.bar(r, Women, color = 'b',
        width = width, edgecolor = 'black',
        label='Women')
plt.bar(r + width, Men, color = 'g',
        width = width, edgecolor = 'black',
        label='Men')

plt.xlabel("Year")
plt.ylabel("Number of people voted")
plt.title("Number of people voted in each year")

# plt.grid(linestyle='--')
plt.xticks(r + width/2,['2018','2019','2020','2021'])
plt.legend()

plt.show()

它生成了我需要的图,但我无法将值添加到顶部的条形图。即我希望在栏的顶部或中心为每个栏显示 WomenMen 的值。我必须使用函数 plt.bar,因为代码是祖父级的。

您可以遍历数据列表并将 plt.text 放在每个条形图上方。

plt.legend()plt.show() 之间添加:

for i, w, m in zip(r, Women, Men):
    plt.text(i, w + 10, str(w), color='b', 
             horizontalalignment='center')

    plt.text(i + width, m + 10, str(m), color='g', 
             horizontalalignment='center')

# Manually increase the top y-axis limit to make room for the
# label of the tallest bar
plt.ylim(0, 550);