Добавление значений в многополосный график с помощью панели matplotlib

#pandas #python-3.8

Вопрос:

Я использую следующий код:

 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()
 

Он генерирует нужный мне график, но я не могу добавить значения к столбчатой диаграмме вверху. т. Е. Я хочу, чтобы значения для обоих Women и Men отображались для каждой полосы вверху или в центре полосы. Я должен использовать функцию plt.bar , так как код является дедушкиным.

Ответ №1:

Вы можете перебирать свои списки данных и размещать 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);
 

График результата