Я решил свой собственный вопрос после долгого и неудачного поиска, поэтому я публикую здесь вопрос и ответ сразу ниже.
Цель: построить проценты, но аннотировать необработанные значения. Проблема: вы можете аннотировать столбцы с вашими нанесенными на график данными (в моем случае, процентами), перебирая объект панели осей и вызывая get_height (), чтобы получить текст. Однако, если вы хотите аннотировать что-то еще, вам нужно одновременно выполнять итерацию по отдельным данным аннотации и вместо этого предоставлять их в виде текста аннотации. Мое первое решение не удалось, потому что отдельные данные аннотации, несмотря на то, что они были заказаны, были назначены столбцам совершенно не по порядку (я хотел бы, чтобы кто-нибудь мог мне сказать, почему):
def autolabel(my_bar, raw_freqs):
"""Attach a text label above each bar in *my_bar*, displaying its height."""
i = 0
for point in my_bar:
height = point.get_height()
ax.annotate('{}'.format(raw_freqs[i]),
xy=(point.get_x() + point.get_width() / 2, height),
xytext=(0, 3), # 3 points vertical offset
textcoords="offset points",
ha='center', va='bottom', rotation=90)
i += 1
Решение, которое я нашелзаключается в том, чтобы сжать объект панели осей и данные аннотации вместе, а затем выполнить итерацию по нему. Смотрите ответ ниже.