如何使用 Pairgrid 更改 Seaborn 中直方图的透明度?

数据挖掘 熊猫 海运
2021-10-01 15:50:59

我正在使用Kaggle Titanic 数据集一个特点是“登船”,即乘客登船的城市。存活率似乎与它相关,但我担心它可能只是与票价相关(存活率肯定与之相关)。

我想绘制票价的直方图。那很容易。但是,我还想在同一个图上显示三个启动值(Q、C、S)的直方图,用不同的颜色标记。

我已经搜索过,但无法弄清楚如何。我可以用 FacetGrid 实现一些相对相似的东西:

g = sns.FacetGrid(train_df, col='Embarked')
g.map(plt.hist, 'Fare', bins=20)

它给出了三个单独的直方图,几乎是我想要的:

在此处输入图像描述

但这不是我想要的。例如,比较它们并不好。我可以计算平均值,但理想情况下我会看到它们重叠,所以三个直方图在同一个图上,你可以将它们区分开来,因为它们被标记为不同的颜色。

似乎 PairGrid几乎是我想要的,但它似乎为“Fare”(不在0 和 1 之间)提供了一些奇怪的轴,并且图例是空白的,颜色是纯色的(所以你可以只看到顶层)。

g = sns.PairGrid(train_df[["Embarked","Fare"]], hue="Embarked",size=8)
g = g.map_diag(plt.hist)
g = g.add_legend()

在此处输入图像描述

我很困惑,甚至不知道如何找到正确的答案。似乎 Seaborn 可以做任何事情,一些非常酷的事情,但在特定情况下,我无法找到我想要做的具体事情。

我怎么能做到这一点?

1个回答

使用 pandas 数据框,以下内容应该在没有 seaborn 的情况下完成:

train_df.groupby('Embarked')['Fare'].plot.hist(alpha=0.5)

如果你必须使用 seaborn,你可以FacetGrid不使用colandrow参数使用:

g = sns.FacetGrid(train_df, hue='Embarked')
g = g.map(plt.hist, 'Fare', alpha=0.5)
g = g.add_legend()