【发布时间】:2021-01-19 04:41:16
【问题描述】:
对不起,如果这太基本了,这是我向论坛提出的第一个问题:
我正在使用 Titanic 数据集进行练习和
我正在尝试绘制变量“年龄”的两种分布,一种仅针对幸存的乘客,另一种针对死亡的乘客。但由于某种原因,它们在绘制在一起时并不共享相同的 x 轴。
到目前为止,这是我的代码:
df_age = df[df['Age'].notnull()]
dfage_survived = dfage[dfage.Survived == 1]
dfage_perished = dfage[dfage.Survived == 0]
sns.set(style="white", palette="muted", color_codes=True)
fig = plt.figure(constrained_layout=True, figsize=(8, 8))
spec = fig.add_gridspec(3, 2)
ax1 = fig.add_subplot(spec[0, 0])
ax1 = sns.barplot(x='Sex', y = 'Survived', data =df)
ax2 = fig.add_subplot(spec[0, 1])
ax2 = sns.barplot(x='Embarked', y = 'Survived', data =df)
ax3 = fig.add_subplot(spec[1, 0])
ax3 = sns.barplot(x='Pclass', y ='Survived', data =df)
ax4 = fig.add_subplot(spec[1, 1])
ax4 = sns.barplot(x='SibSp', y ='Survived', data=df)
ax5 = fig.add_subplot(spec[2, :])
ax5_1 = sns.distplot(dfage_survived['Age'], kde = False, label = 'Survived')
ax5_2 = sns.distplot(dfage_perished['Age'], kde = False, label = 'Perished')
plt.legend(prop={'size': 12})
输出: OUTPUT:
【问题讨论】:
-
原因是直方图的 bin 将最小和最大 x 之间的范围分成相等的部分。两组都有不同的最小值和最大值。此外,您的数据是离散的,因此最好将 bin 边界放置在整数值之间。解决方案是明确设置垃圾箱:
sns.distplot(..., bins=np.arange(-0.5, 86, 5))为两者。
标签: python matplotlib plot seaborn