max(pop[-4:])
вычисляет вертикальное положение для начала скобки как максимум задействованных стержней. С адекватными x
и y
координатами можно нарисовать полную скобку.
Среднее значение положения столбцов можно использовать в качестве x-координаты для текста.
import matplotlib.pyplot as plt
ag = ['0', '10', '20', '30', '40', '50', '60', '70', '80', '90']
pop = [12, 11, 13, 14, 13, 14, 11, 9, 4, 1]
plt.ylabel("Population (%)")
plt.xlabel("Age Group")
plt.bar(ag, pop)
index1 = 6
index2 = 9
h = max(pop[index1:index2+1]) # maximum of the involved bar heights
bx = [index1-0.5, index1-0.5, index2+0.5, index2+0.5]
by = [h + 0.5, h + 1, h + 1, h + 0.5]
plt.plot(bx, by, 'k-', lw=2)
plt.text((index1 + index2) / 2, h + 1.5, f'{sum(pop[index1:index2+1]):.0f} %', size=20, ha='center', va='bottom')
plt.show()