具有连续色调的 Seaborn 配对图?

Posted

技术标签:

【中文标题】具有连续色调的 Seaborn 配对图?【英文标题】:Seaborn pairplots with continuous hues? 【发布时间】:2020-08-05 08:17:23 【问题描述】:

如何为我的 seaborn 配对图引入连续色调?

我正在传递一个熊猫数据框train_df,以便可视化多个特征之间的关系。

不过,我还想添加一个色调,它会使用它们对应的目标值 target_df。这些目标值是连续的(~ 在 10 到 100 之间浮动)。

我已经定义了一个我想使用的sns.color_palette("RdGr")

现在我有以下配对图(没有色调):

sns.pairplot(train_df)

如何使用上面定义的调色板将 target_df 作为色调传递?

提前非常感谢。

【问题讨论】:

您好,我想帮忙,但是我不太确定我是否理解您想要归档的内容。您有两个单独的数据集。 train_df 的一项观察与 target_df 有何关系?此外,提供minimal reproducible example 或模拟数据以阐明您的目标是非常有益的 【参考方案1】:

在文档(https://seaborn.pydata.org/generated/seaborn.pairplot.html)中,您可以看到在调用函数时只需要设置palette = my_palette

sns.pairplot(train_df, palette = my_palette)

【讨论】:

感谢您的回复。这不起作用,因为我还需要通过 hue 参数在 target_df 中包含有关连续目标变量的信息。 试试sns.pairplot(train_df, hue= my_palette)【参考方案2】:

IIUC,您可以将target_df 分配为train_df 中的一列并将其作为hue 传递:

sns.pairplot(data=train_df.assign(target=target_df, 
                                  hue='target')

但是,如果您的 target 是连续的,这将非常缓慢。相反,你可以做一个双 for 循环:

num_features = len(train_df.columns)
fig,ax = plt.subplots(num_features, num_features, figsize=(10,10))
for i in train_df.columns:
    for j in train_df.columns:
        if i==j:    # diagonal
            sns.distplot(train_df[0], kde=False, ax=ax[i][j])
        else:       # off diagonal
            sns.scatterplot(x=train_df[i],y=train_df[j], 
                            ax=ax[i][j], hue=target_df, palette='BrBG',
                            legend=False)

这给了你这样的东西:

【讨论】:

【参考方案3】:

pairplot(嗯,底层的PairGrid)现在将hue 委托给映射函数(如果它支持)。不过,您可能想为每个价格绘制不同的边际密度:

diamonds = sns.load_dataset("diamonds")
sns.pairplot(
    diamonds,
    hue="price", vars=["carat", "depth", "table"], 
    diag_kws=dict(color=".2", hue=None)
)

旧答案,用于演示更灵活地使用PairGrid

这可能比现在更容易,但没有必要自己重新创建PairGrid

diamonds = sns.load_dataset("diamonds")
g = sns.PairGrid(diamonds, vars=["carat", "depth", "table"])
g.map_diag(sns.kdeplot, color=".2")
g.map_offdiag(sns.scatterplot, hue=diamonds["price"], s=5, linewidth=0)
g.axes[1, -1].legend(loc="center left", bbox_to_anchor=(.7, .5))

【讨论】:

以上是关于具有连续色调的 Seaborn 配对图?的主要内容,如果未能解决你的问题,请参考以下文章

如何在seaborn barplot中使用NaN值作为具有定义颜色的色调

seaborn 中的一半(不分裂!)小提琴情节

使用色调参数在seaborn中分割小提琴图

绘制具有多个属性的图形,类似于 Seaborn 中的“色调”

Seaborn - 添加色调时时间序列换行

如何在 Seaborn 图中设置色调顺序