对于一列数据帧,我在sns.pairlot中使用渐变颜色,这样我就可以看到哪些数据点相互连接了

2022-02-27 00:00:00 python matplotlib seaborn

问题描述

我可以很容易地用以下命令生成海运配对图:

import seaborn as sns
import matplotlib.pyplot as plt
import pandas as pd
import numpy as np

f, axes = plt.subplots(1, 1)

np.random.seed(1)
a = np.arange(0, 10, 0.1)

np.random.rand()

def myFunc(x):
    myReturn = x + 1*np.random.random(x.shape[0])
    return myReturn

b = myFunc(a)
c = a * np.sin(a)

df = pd.DataFrame({'a': a, 'b': b, 'c': c})

sns.pairplot(df, corner=True)
plt.show()

我希望更轻松地查看我的数据之间的相互依赖关系。

为此,我希望DataFrame的一列具有渐变颜色(以便该列的低位数值为黄色,高位数值为蓝色)。

根据a的数据点,我的绘图的所有非对角线子图都应该显示这些颜色,请参见下面的草图。

这对[a,b]和[a,c]绘图的好处是有限的,但是对于[b,c]绘图,如果数据变得更加复杂,我希望得到更多的见解。

此操作的语法如何?


解决方案

我认为这里更简单的做法是将数据帧索引作为色调变量传递。由于您不想(天真地)应用于直方图,请将其直接传递给非对角线图:

sns.pairplot(
    df,
    corner=True,
    diag_kws=dict(color=".6"),
    plot_kws=dict(
        hue=df.index,
        palette="blend:gold,dodgerblue",
    ),
)

相关文章