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)
例如,散点图矩阵-非对角线展示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)
个性化散点图矩阵
即更个性化的散点图矩阵,
例如,个性化散点图矩阵-高度个性化,
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)
例如,个性化散点图矩阵-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)
边际图
边际图可在一张图中同时”展示两个变量中的双变量和单变量图,边际图常用于展示两个变量之间的关系及它们的分布。
例如,边际图-中心图(等高线图),
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)
例如,边际图-中心图(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)
例如,边际图-中心图(回归曲线图),
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)
个性化边际图
即更个性化的边际图。
例如,个性化边际图-分别个性化边侧图,
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)
例如,个性化边际图-分组配色
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)
例如,更复杂边际图,
-END-
👇加入学习(收费,请备注:169)