【问题标题】:how to display a mean on a bar plot [duplicate]如何在条形图上显示平均值[重复]
【发布时间】:2021-10-28 01:24:10
【问题描述】:

我对图表有疑问。 这是代码:

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 个进球,我想要一条相同颜色的线来显示这一点。

【问题讨论】:

  • 我认为你对梅西和罗纳尔多的大写字母有误: messi_df = df.loc[df.player == 'messi'].reset_index() ronaldo_df = df.loc[df .player == '罗纳尔多']

标签: python pandas dataframe matplotlib seaborn


【解决方案1】:

你可以使用 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)

【讨论】:

  • 我适当设定了目标数量;我制作了一个熊猫图作为对象,并在其中添加了水平线。如果我的回答对您有帮助,请点击对勾接受回答。
  • 谢谢,很好。当代码计算平均值时,你知道怎么做吗?
  • 哪一栏表示目标?哪一栏表示目标?例如,假设目标列是 df['goal'].mean()
  • 您的问题已成为重复问题,但我可以接受您的回答。很高兴认识你。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2019-06-22
  • 2021-06-30
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2019-04-03
  • 1970-01-01
相关资源
最近更新 更多