Вот мой код:
Код: Выделить всё
import pandas as pd
import numpy as np
import seaborn as sns
import matplotlib.pyplot as plt
df = pd.DataFrame({
'years': ['1994-1998','1999-2003','2004-2008','2009-2013','2013-2017','2018-2022'],
'Starfish number of cases': [10,8,31,12,2,3],
'Starfish percent of wins': [0,0.25,0.225806451612903,0.416666666666666,1,0],
'Jellyfish number of cases':[597,429,183,238,510,595],
'Jellyfish percent of wins':[0.362646566164154,0.273892773892773,0.423497267759562,0.478991596638655,0.405882352941176,0.408403361344537],
})
df = pd.melt(df, id_vars=['years'], value_vars=['Starfish percent of wins', 'Jellyfish percent of wins'])
sns.set_theme(style="whitegrid")
# Initialize the matplotlib figure
f, ax = plt.subplots(figsize=(30, 15))
sns.barplot(x="years", y="value", hue='variable', data=df)
for p in ax.patches:
ax.annotate(str(p.get_height()), (p.get_x() * 1.005, p.get_height() * 1.005))
(т.е. df = pd.melt(df, id_vars=['years'], value_vars=[' Число случаев морской звезды», «Количество случаев медузы», «Процент побед морской звезды», «Процент побед медузы»])), но при этом добавляются дополнительные полосы, представляющие общее количество случаев.Я попытался изменить ответ здесь, добавив строки ниже, но результаты показывают процентные аннотации, а не количество случаев:
Код: Выделить всё
for p,years in zip(ax.patches, df['Starfish number of cases','Jellyfish number of cases']):
ax.annotate(years, xy=(p.get_x()+p.get_width()/2, p.get_height()),
ha='center', va='bottom')
Подробнее здесь: https://stackoverflow.com/questions/786 ... her-column