pythonic生物人

53个图表,完美展示数据组合关系!

本文介绍使用Python工具seaborn详细实现组合关系图(Multi-plot grids)表,包含4类图53个代码模版。

组合关系图是一种图形化工具,用于在单个图表中展示多种图形,以便从不同维度深入挖掘数据。可以进一步分为:散点图矩阵、个性化散点图矩阵、边际图和个性化边际图等组合关系图。

节选自👉12.3万字+500多张图形+8000行代码......


散点图矩阵

散点图矩阵(scatterplot matrix)展示原始数据中所有变量两两之间关系,可以规避单一统计指标的偏差,可以在平面上快速优雅的探索高维数据。

例如,散点图矩阵-分组颜色顺序 ,

g = sns.pairplot(
    data=penguins,
    hue="性别",
    hue_order=["FEMALE", "MALE"],  #分组颜色顺序
    palette=["#006a8e", "#b1283a"],
    height=1.5,
    aspect=1.2,
    plot_kws=dict(color="#7995c4", alpha=1),
    diag_kws=dict(color="#7995c4", alpha=1))
g.fig.set_size_inches(8, 8)
g.fig.set_dpi(200)
Image

例如,散点图矩阵-非对角线展示scatter+拟合曲线,

g = sns.pairplot(
    data=penguins,
    kind="reg",  #非对角线展示scatter+拟合曲线,调用了regplot
    diag_kind="hist",
    markers=["^", "o"],
    hue="性别",
    palette=["#006a8e", "#b1283a"],
    height=1.5,
    aspect=1.2,
    plot_kws=dict(
        scatter_kws={'alpha': 0.4,'s': 12},  #个性化散点
        line_kws={  #个性化拟合曲线
            'linestyle': '--',
            'linewidth': 1,
            'alpha': 0.8
        },
    ),
    diag_kws=dict(alpha=0.4))
g.fig.set_size_inches(8, 8)
g.fig.set_dpi(200)
Image

个性化散点图矩阵

即更个性化的散点图矩阵,Image

例如,个性化散点图矩阵-高度个性化,

g = sns.PairGrid(penguins,
                 hue="性别",
                 palette=["#006a8e", "#b1283a"],
                 diag_sharey=False)
g.map_upper(
    sns.scatterplot,
    size=penguins["体重"],  #散点按照“体重”变化
)  #更多参数参考上文章节“7.1 散点图(13种)”
g.map_diag(
    sns.histplot,
    multiple="stack",  #堆叠
)  #更多参数参考上文章节“8.1.12 分组直方图-堆积叠加”
g.map_lower(
    sns.kdeplot,
    fill=True,  #填充
    alpha=0.6,  #透明度
)  #更多参数参考上文章节“8.2 核密度图(16种)”
g.add_legend(title="")
g.fig.set_dpi(150)
Image

例如,个性化散点图矩阵-xy轴方向选取相同子集,

g = sns.PairGrid(
    penguins,
    hue="性别",
    vars=['喙长 (毫米)', '喙深 (毫米)'],  #xy轴方向选取相同子集
    palette=["#006a8e", "#b1283a"],
    height=1,
    aspect=3,
    diag_sharey=False)
g.map_upper(sns.scatterplot)
g.map_diag(sns.histplot)
g.map_lower(sns.kdeplot)
g.add_legend()
g.fig.set_size_inches(5, 5)
g.fig.set_dpi(150)
Image

边际图

边际图可在一张图中同时”展示两个变量中的双变量和单变量图,边际图常用于展示两个变量之间的关系及它们的分布。

例如,边际图-中心图(等高线图),

g = sns.jointplot(
    data=penguins,
    x="喙长 (毫米)",
    y="喙深 (毫米)",
    kind="kde",  #中心图(等高线图)
    hue="性别",
    palette=["#006a8e", "#b1283a"],
    joint_kws=dict(alpha=0.5, fill=True),
    marginal_kws=dict(alpha=0.3, fill=True))
g.fig.set_dpi(150)
g.fig.set_size_inches(10, 8)
Image

例如,边际图-中心图(Hexbin图),

g = sns.jointplot(
    data=penguins,
    x="喙长 (毫米)",
    y="喙深 (毫米)",
    kind="hex",  #中心图(Hexbin图)
    joint_kws=dict(color="#006a8e", alpha=0.5),
    marginal_kws=dict(alpha=0.5, color="#006a8e", fill=True))
g.fig.set_dpi(150)
g.fig.set_size_inches(10, 8)
Image

例如,边际图-中心图(回归曲线图),

g = sns.jointplot(
    data=penguins,
    x="喙长 (毫米)",
    y="喙深 (毫米)",
    kind="reg",  #中心图(回归曲线图)
    joint_kws=dict(color="#006a8e",
                   marker="o",
                   scatter_kws={
                       "s": 150,
                       "alpha": 0.5,
                   },
                   line_kws=dict(
                       color="r",
                       linewidth=1.5,
                   )),
    marginal_kws=dict(alpha=0.5, color="#006a8e", fill=True))
g.fig.set_dpi(150)
g.fig.set_size_inches(10, 8)
Image

个性化边际图

即更个性化的边际图。

例如,个性化边际图-分别个性化边侧图,

g = sns.JointGrid(data=penguins, x='喙长 (毫米)', y='喙深 (毫米)')

g.plot_joint(sns.scatterplot, color="#006a8e", alpha=0.5, marker='o', s=250)
sns.kdeplot(x=penguins['喙长 (毫米)'],
            color="#006a8e",
            fill=True,
            alpha=0.5,
            linewidth=1.2,
            ax=g.ax_marg_x)  # #个性化上侧边侧图
sns.boxplot(y=penguins['喙深 (毫米)'],
            color="#b1283a",
            boxprops=dict(alpha=0.5),
            linewidth=1,
            ax=g.ax_marg_y)  #个性化右侧边侧图

g.fig.set_dpi(150)
g.fig.set_size_inches(10, 8)

Image

例如,个性化边际图-分组配色

g = sns.JointGrid(data=penguins,
                  x='喙长 (毫米)',
                  y='喙深 (毫米)',
                  hue='性别',
                  palette=["#006a8e", "#b1283a"])

g.plot(
    sns.kdeplot,  #指定中心图
    sns.histplot,  #指定边侧图
    alpha=.5,
    fill=True)
g.fig.set_dpi(150)
g.fig.set_size_inches(10, 8)

Image

例如,更复杂边际图,

ImageImage


-END-
分享一份👉原创Python可视化教程:530张图形+8000行代码+详细代码注释+后续免费更新+学习交流群,部分目录,
Image

👇加入学习(收费,请备注:169)

Image