【问题标题】:How to display percentage label in histogram plot in Python如何在 Python 的直方图中显示百分比标签
【发布时间】:2016-08-18 03:42:58
【问题描述】:

我设法创建了一个图表,显示我的 Pandas 数据框中每个年龄的每个类别标签的记录数。但我也希望看到每个年龄组中“非功能性”类别的百分比标签。

图表的 Python 代码是

train['age_wpt'] = train.date_recorded.str.split('-').str.get(0).apply(int) - train.construction_year

figure = plt.figure(figsize=(15,8))
plt.hist([
        train[(train.status_group=='functional') & (train.age_wpt < 60.0) & (train.age_wpt >= 0.0)]['age_wpt'],
        train[(train.status_group=='non functional') & (train.age_wpt < 60.0) & (train.age_wpt >= 0.0)]['age_wpt'],
        train[(train.status_group=='functional needs repair') & (train.age_wpt < 60.0) & (train.age_wpt >= 0.0)]['age_wpt']
        ], 
         stacked=True, color = ['b','r','y'],
         bins = 30,label = ['functional','non functional', 'functional needs repair'])
plt.xlabel('Age')
plt.ylabel('Number of records')
plt.legend()

结果如下图

【问题讨论】:

    标签: python matplotlib


    【解决方案1】:

    规范:布尔值,可选 如果True,返回元组的第一个元素将 将计数归一化以形成概率密度,即 n/(len(x)`dbin),即直方图积分求和 为 1. 如果 stacked 也是 True,则直方图的总和为 归一化为 1。 默认为False

    plt.hist([
            train[(train.status_group=='functional') & (train.age_wpt < 60.0) & (train.age_wpt >= 0.0)]['age_wpt'],
            train[(train.status_group=='non functional') & (train.age_wpt < 60.0) & (train.age_wpt >= 0.0)]['age_wpt'],
            train[(train.status_group=='functional needs repair') & (train.age_wpt < 60.0) & (train.age_wpt >= 0.0)]['age_wpt']
            ], 
             stacked=False, color = ['b','r','y'], normed=True
             bins = 30,label = ['functional','non functional', 'functional needs repair'])
    

    【讨论】:

    • 感谢您的回答,但我想显示每个年龄每个红色部分的百分比。 Normed=True 给出每个条形图占图表中所有条形图总数的百分比。
    • 能否提供数据? data = {'functional': train[(train.status_group=='functional') &amp; (train.age_wpt &lt; 60.0) &amp; (train.age_wpt &gt;= 0.0)]['age_wpt'], ''non functional': train[(train.status_group=='non functional') &amp; (train.age_wpt &lt; 60.0) &amp; (train.age_wpt &gt;= 0.0)]['age_wpt'], "functional needs repair": train[(train.status_group=='functional needs repair') &amp; (train.age_wpt &lt; 60.0) &amp; (train.age_wpt &gt;= 0.0)]['age_wpt']]}
    • 另外,试试stacked=False
    • 数据来源于此链接drivendata.org/competitions/7
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-12-20
    • 1970-01-01
    • 2022-12-14
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多