Как добавить текст на каждый бар в pyplot.barh

Хочу сделать так, как, собственно, как описал в заголовке вопроса. Сейчас мой график выглядит так: введите сюда описание изображения

Я хочу, чтобы это выглядело примерно так, чтобы на каждый бар (или рядом с ним) добавлялось соответствующее значение из списка: введите сюда описание изображения

Подскажите, как можно это сделать? Вот мой код:

from matplotlib import pyplot as plt

reuslt = {'★★★★★': 58, '★★★★': 8, '★★★': 8, '★★': 6, '★': 20}
plt.style.use('ggplot')
y_axes = list(reuslt.keys())
x_axes = list(reuslt.values())

plt.xlabel('Процент от всех отзывов')
colors = ['green', 'y', 'yellow', 'orange', 'r']
    
plt.barh(y_axes, x_axes, height=0.5, color=colors, edgecolor='black', linewidth='0.4')
plt.gca().invert_yaxis()

    
# print(y_axes)
# print(x_axes)

plt.show()

UPD: Я попробовал сделать как в комментарии ниже, добавил код:

for i, v in enumerate(x_axes):
    plt.text(v - 3, i + 0.1, str(v), color='black', fontweight='bold')

но возникает проблема, я не знаю как задать координату Х так, чтобы она, в случае слишком длинного или слишком короткого баров (если какое-то значение будет нулевым) не печаталась вне поля, пример ниже: введите сюда описание изображения

Можно ли это как-то просто предусмотреть, или втупую писать условия самому?

UPD 2: Решил проблему с помощью такого условия:

for i, v in enumerate(x_axes):
    plt.text(v - 3 if v > 10 else v + 3, i + 0.1, str(v), color='black', fontweight='bold')

Но ответы все-равно принимаются, вдруг есть способ получше)


Ответы (1 шт):

Автор решения: whizz169

Решил проблему добавлением следующего блока кода:

for i, v in enumerate(x_axes):
    plt.text(v - 3 if v > 10 else v + 3, i + 0.1, str(v), color='black', fontweight='bold')
→ Ссылка