- Чтобы указать горизонтальное выравнивание аннотации, используйте параметр
ha
- Согласно предложению Johan C
- Уловка состоит в том, чтобы использовать
f'{value}\n'
в качестве строки и неизмененное value
(или numbers
) в качестве позиции y вместе с va='center'
. - Это также работает с
plt.text
. В качестве альтернативы plt.annotation
принимает смещение в «точках» или «пикселях».
Вариант 1
- От
lists
значений & категории
import matplotlib.pyplot as plt
gender = ['M', 'F']
numbers = [1644, 1771]
plt.figure(figsize=(12, 6))
bars = plt.bar(gender, numbers, width=0.1, bottom=None, align='center', data=None)
for i in range(len(numbers)):
plt.annotate(f'{numbers[i]}\n', xy=(gender[i], numbers[i]), ha='center', va='center')
Вариант 2
import pandas as pd
import matplotlib.pyplot as plt
df = pd.DataFrame({'value': [1771, 1644], 'gender': ['F', 'M']})
plt.figure(figsize=(12, 6))
bars = plt.bar(df.gender, df.value, width=0.1, bottom=None, align='center', data=None)
for idx, (value, gender) in df.iterrows():
plt.annotate(f'{value}\n', xy=(gender, value), ha='center', va='center')
Вывод графика
введите описание изображения здесь