【问题标题】:Confidence interval does not display on barplot置信区间不显示在条形图上
【发布时间】:2021-04-08 20:52:34
【问题描述】:

我想显示绘图中每个条形的置信区间,但它们似乎没有显示。我有两个数据框,我在两个数据框的图中显示了NUMBER_GIRLS 列的平均值。

例如,考虑两个数据框(如下所示)。

  • schools_north_df
ID     NAME     NUMBER_GIRLS
----------------------------
1     SCHOOL_1       32
2     SCHOOL_2       12
3     SCHOOL_3       26
  • schools_south_df
ID     NAME     NUMBER_GIRLS
----------------------------
1     SCHOOL_1       56
2     SCHOOL_2       33
3     SCHOOL_3       34

因此,我使用此代码(如下所示)绘制了我的条形图,其中显示了每个条形的置信区间 - 但是在绘制它时,置信区间不显示。

import matplotlib.pyplot as plt

objects = ('North', 'South')
y_pos = np.arange(len(objects))
avg_girls = [schools_north_df[NUMBER_GIRLS].mean(), schools_south_df[NUMBER_GIRLS].mean()]

sns.barplot(y_pos, avg_girls, ci=95)
plt.xticks(y_pos, objects)
plt.title('Average Number of Girls')

plt.show()

如果有人可以帮助我并指出我的代码有什么问题。我真的需要在我的条形图上显示置信区间。

非常感谢!

【问题讨论】:

    标签: python pandas dataframe matplotlib seaborn


    【解决方案1】:

    如果你想让seaborn显示置信区间,你需要让seaborn自己聚合数据(也就是说,提供原始数据而不是自己计算平均值)。

    我将创建一个带有额外列 (region) 的新数据框,以指示数据是来自“北”还是“南”,然后请求 seaborn 绘制 NUMBER_GIRLSregion

    df = pd.concat([schools_north_df.assign(region='North'), schools_south_df.assign(region='South')])
    

    输出:

      ID      NAME  NUMBER_GIRLS region
    0   1  SCHOOL_1            32  North
    1   2  SCHOOL_2            12  North
    2   3  SCHOOL_3            26  North
    0   1  SCHOOL_1            56  South
    1   2  SCHOOL_2            33  South
    2   3  SCHOOL_3            34  South
    

    情节:

    sns.barplot(data=df, x='region', y='NUMBER_GIRLS', ci=95)
    

    【讨论】:

      猜你喜欢
      • 2020-02-27
      • 2016-02-24
      • 2018-09-28
      • 2015-09-03
      • 1970-01-01
      • 2012-11-17
      • 1970-01-01
      • 1970-01-01
      • 2019-12-10
      相关资源
      最近更新 更多