首页 > 解决方案 > 如何在条形图上显示平均值

问题描述

我的图表有问题。这是代码:

import pandas as pd
import matplotlib.pyplot as plt

df = pd.read_csv('https://raw.githubusercontent.com/verticale3185/FINEL-PROJECT/main/cristiano_vs_messi.csv')

df.date = pd.to_datetime(df.date)
df['year'] = pd.DatetimeIndex(df['date']).year
df['year'].fillna(method = 'ffill', inplace = True)
df['year'] = df['year'].astype(int)

messi_df = df.loc[df.player == 'messi'].reset_index()
ronaldo_df = df.loc[df.player == 'ronaldo']

plt.suptitle('Goals Per Year For Fvery Player')
ronaldo_df.groupby(['year'])['player'].count().astype(int).plot(kind='bar',color='brown',label='Ronaldo',figsize=(15,5),width = 0.4)
messi_df.groupby(['year'])['player'].count().astype(int).plot(kind='bar',color='#14D622',label='Messi',figsize=(15,5),width = 0.2)

现在在这张图上,我想添加一条关于每个玩家的平均值的线。例如,如果梅西的进球平均值是一年的 32 个进球,我想要一条相同颜色的线来显示这一点。

标签: pythonpandasdataframematplotlibseaborn

解决方案


您可以使用 ax.axhline() 绘制一条水平线。

r = ronaldo_df.groupby(['year'])['player'].count().astype(int).plot(kind='bar',color='brown',label='Ronaldo',figsize=(15,5),width = 0.4)
m = messi_df.groupby(['year'])['player'].count().astype(int).plot(kind='bar',color='#14D622',label='Messi',figsize=(15,5),width = 0.2)

m.axhline(32, color='#14D622', lw=2)
r.axhline(28, color='brown', lw=2)

在此处输入图像描述


推荐阅读