#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);