Я пытаюсь аннотировать диаграмму, чтобы включить нанесенные значения оси X, а также дополнительную информацию из DataFrame. Я могу аннотировать значения по оси X, но не уверен, как добавить дополнительную информацию из фрейма данных. В моем примере ниже я аннотирую ось X, которая является значениями из столбца Завершение , но также хочу добавить значения Завершено и Участники из DataFrame. ,
Например, Выполняется Завершение составляет 20%, но я хочу, чтобы в моей аннотации отображались значения Завершено и Участники в формате - 20% (2/10). Ниже приведен пример кода, который может воспроизвести мой сценарий, а также текущие и желаемые результаты. Любая помощь приветствуется.
Код:
import pandas as pd
import matplotlib.pyplot as plt
import seaborn as sns
mydict = {
'Event': ['Running', 'Swimming', 'Biking', 'Hiking'],
'Completed': [2, 4, 3, 7],
'Participants': [10, 20, 35, 10]}
df = pd.DataFrame(mydict).set_index('Event')
df = df.assign(Completion=(df.Completed/df.Participants) * 100)
print(df)
plt.subplots(figsize=(5, 3))
ax = sns.barplot(x=df.Completion, y=df.index, color="cyan", orient='h')
for i in ax.patches:
ax.text(i.get_width() + .4,
i.get_y() + .67,
str(round((i.get_width()), 2)) + '%', fontsize=10)
plt.tight_layout()
plt.show()
DataFrame:
Completed Participants Completion
Event
Running 2 10 20.000000
Swimming 4 20 20.000000
Biking 3 35 8.571429
Hiking 7 10 70.000000
Токовый выход:
Требуемый выход: