多变量的图表示法是将多变量用平面上的直观图形进行表示,以帮助人们去思考和判断。当变量较少时,可以采用直方图、条形图、饼图、散点图或是经验分布的密度图等方法。而当变量个数为3时,虽然仍可以做三维的散点图,但这样做已经不是很方便,当变量个数大于3时,就不能用通常的方法作图了。自20世纪70年代以来,统计学家研究发明了很多多维变量的图表示方法,以借助图形来描述多元数据资料的统计特性,使图形直观、简洁的优点延伸到多变量的研究中去,例如有散点图矩阵、脸谱图、塑像图、轮廓图、雷达图等多变量的图表示法的基本思想及作图方法。
    散点图矩阵是借助两变量散点图的作图方法,它可以看作是一个大的图形方阵,其每一个非主对角元素的位置上是对应行的变量与对应列的变量的散点图。而主对角元素位置上是单个变量的分布,这样,借助散点图矩阵可以清晰地看到所研究多个变量两两之间的相互关系。因其直观,简单,容易理解,散点图矩阵还是受到了广大实际工作者的喜爱,很多统计软件也加入了作散点图矩阵的功能。
    seaborn中可以应用pairplot()方法实现散点图矩阵,可用于表现每对特征之间的双变量关系,pairplot ()的参数及其意义如下:

    1. seaborn.pairplot(data, hue=None, hue_order=None,
    2. palette=None, vars=None, x_vars=None,
    3. y_vars=None, kind='scatter',
    4. diag_kind='hist', markers=None,
    5. size=2.5, aspect=1, dropna=True,
    6. plot_kws=None, diag_kws=None,
    7. grid_kws=None)

    (1)
    data: DataFrame格式的数据
    (2)
    hue: label类别对应的列名,使用指定变量为分类变量画图。参数类型:string (变量名)
    (3)
    palette : 调色板颜色
    (4)
    vars : 指定feature的列名,与data一起使用,留几个特征两两比较。否则使用data的全部变量。参数类型:numeric类型的变量list。
    (5)
    {x, y}_vars : 与data一起使用,细分谁与谁比较。否则使用data的全部变量。参数类型:numeric类型的变量list。
    (6)
    dropna : 是否剔除缺失值。参数类型:boolean, optional
    (7)
    kind : 作图的方式,单变量图的设定,单变量为线形图,其他散点,取值为{‘scatter’, ‘reg’}之一。
    (8)
    diag_kind : 对角线作图的方式, 给单变量图增加画图样式,取值为{‘hist’, ‘kde’}之一,hist为直方图,kde为密度曲线图。
    (9)
    markers : 使用不同的形状。参数类型:list
    (10) size : 默认 6,图的尺度大小(正方形)。参数类型:numeric
    (11) {plot, diag, grid}_kws : 指定其他参数。参数类型:dicts
    seaborn中应用pairplot()方法实现散点图矩阵

    1. import pandas as pd # 导入pandas库
    2. import warnings # 载入当前版本seaborn库时会有警告出现,先载入warnings,忽略警告
    3. import seaborn as sns # 导入seaborn库
    4. import matplotlib.pyplot as plt # 导入matplotlib库
    5. warnings.filterwarnings("ignore") # 忽略警告
    6. sns.set(style="white", color_codes=True) # 确定主题为white
    7. iris = pd.read_csv("iris.csv") # 读取csv数据并转为Pandas的 DataFrame格式
    8. #通过vars参数指定两个特征参与比较,产生2*2的矩阵
    9. sns.pairplot(iris.drop("Id", axis=1),vars=["SepalLengthCm", "SepalWidthCm"],palette="husl", hue="Species", size=3,diag_kind="kde")
    10. plt.show()

    image.png
    两特征散点矩阵图

    也可以表现任意两特征之间的关系,如图所示

    1. import pandas as pd # 导入pandas库
    2. import warnings # 载入当前版本seaborn库时会有警告出现,先载入warnings,忽略警告
    3. import seaborn as sns # 导入seaborn库
    4. import matplotlib.pyplot as plt # 导入matplotlib库
    5. warnings.filterwarnings("ignore") # 忽略警告
    6. sns.set(style="white", color_codes=True) # 确定主题为white
    7. iris = pd.read_csv("iris.csv") # 读取csv数据并转为Pandas的 DataFrame格式
    8. # pairplot 任意两个特征之间的关系
    9. sns.pairplot(iris.drop("Id", axis=1), hue="Species", size=3,diag_kind="hist")
    10. plt.show()

    image.png
    任意两特征散点矩阵图

    中间对角线的图形缺省为直方图,也可以显示核密度估计图,通过修改参数dige_kind的值实现,例如设为”kde”,显示为核密度估计图,如图所示。

    1. import pandas as pd # 导入pandas库
    2. import warnings # 载入当前版本seaborn库时会有警告出现,先载入warnings,忽略警告
    3. import seaborn as sns # 导入seaborn库
    4. import matplotlib.pyplot as plt # 导入matplotlib库
    5. warnings.filterwarnings("ignore") # 忽略警告
    6. sns.set(style="white", color_codes=True) # 确定主题为white
    7. iris = pd.read_csv("iris.csv") # 读取csv数据并转为Pandas的 DataFrame格式
    8. # pairplot 任意两个特征之间的关系
    9. # 如果需要回归分析,为pairplot()方法增加kind="reg"参数即可。
    10. sns.pairplot(iris.drop("Id", axis=1), hue="Species", size=3, diag_kind="kde")
    11. plt.show()

    image.png
    任意两特征散点矩阵图(KDE)

    1. import pandas as pd # 导入pandas库
    2. import warnings # 载入当前版本seaborn库时会有警告出现,先载入warnings,忽略警告
    3. import seaborn as sns # 导入seaborn库
    4. import matplotlib.pyplot as plt # 导入matplotlib库
    5. warnings.filterwarnings("ignore") # 忽略警告
    6. sns.set(style="white", color_codes=True) # 确定主题为white
    7. iris = pd.read_csv("iris.csv") # 读取csv数据并转为Pandas的 DataFrame格式
    8. # pairplot 任意两个特征之间的关系
    9. #如果需要回归分析,为pairplot()方法增加kind="reg"参数即可。
    10. sns.pairplot(iris.drop("Id", axis=1), hue="Species", size=3, diag_kind="kde",kind="reg")
    11. plt.show()

    image.png