具体来说,我正在处理Kaggle泰坦尼克号的数据集。我绘制了一个堆叠直方图,显示了泰坦尼克号上幸存和死亡的年龄。代码如下。
figure = plt.figure(figsize=(15,8))
plt.hist([data[data['Survived']==1]['Age'], data[data['Survived']==0]['Age']], stacked=True, bins=30, label=['Survived','Dead'])
plt.xlabel('Age')
plt.ylabel('Number of passengers')
plt.legend()
我想修改一下这个图表,每个箱子显示一个存活者的百分比,例如,如果一个箱子包含10-20岁之间的年龄,并且泰坦尼克号上60%的人在这个年龄组中存活,那么高度将沿着y轴排列60%。
编辑:我可能没有很好地解释我所寻找的东西,我没有改变y轴的值,而是根据存活的百分比来改变条形的实际形状。
图中的第一个条柱显示该年龄组大约65%的存活率。我希望此条柱与y轴对齐,位于65%处。接下来的条柱分别为90%、50%、10%,依此类推。
这个图最终会是这样的:
5条答案
按热度按时间sauutmhj1#
对于海运,请使用参数
stat
。根据documentation,当前支持的stat
参数值为:count
显示观测数frequency
显示观测数除以条柱宽度density
对计数进行归一化,以使直方图的面积为1probability
对计数进行归一化,以使条形高度之和为1percent
归一化,使得条高度总和为100stat
为count
时的结果:stat
变更为probability
后的结果:vh0rcniy2#
也许以下内容会有所帮助...
1.根据“存活”拆分 Dataframe
1.创建箱子
1.使用np.直方图生成直方图数据
1.计算每个分组中的存活率
1.情节
z9ju0rcb3#
pd.Series.hist
在下面使用np.histogram
。我们来探讨一下
我们可以在计算平均条柱边缘时绘制这些图
实际答案
或
我们可以简单地将
normed=True
传递给pd.Series.hist
方法,pd.Series.hist
方法将它传递给np.histogram
yptwkmov4#
library Dexplot能够返回组的相对频率。目前,您需要使用
cut
函数将age
变量合并到Pandas中。然后,您可以使用Dexplot。将要计数的变量(
age2
)传递给count
函数。使用split
参数细分计数,然后使用age2
进行归一化。此外,这可能是绘制堆叠条形图的好时机zy1mlcev5#
首先,最好创建一个函数,将数据按年龄组进行分割
然后可以按如下方式绘制图形: