Seaborn绘制双变量联合分布图实战:散点、回归与密度分析
本文详解Seaborn库中jointplot函数在双变量联合分布可视化中的应用。通过设置kind参数,可生成散点图、回归拟合图、残差图、核密度图及蜂巢图。重点解析各图表类型的适用场景、参数配置及图形解读方法,帮助开发者快速掌握连续数值型数据的关联分析与分布特征展示技巧。
绘制双变量联合分布图
在数据分析过程中,仅观察单个变量的分布往往不足以揭示数据全貌,我们还需要探究变量之间的相互关系,并在此基础上进行预测分析。此时,双变量联合分布分析便成为关键手段。
接下来,我们将探讨针对连续数值型数据的双变量可视化方法。
在Seaborn库中,实现连续数值型双变量可视化主要依赖sns.jointplot()函数。
官方文档参考地址:https://seaborn.pydata.org/generated/seaborn.jointplot.html
seaborn.jointplot(x, y, data=None, kind='scatter')
- x:指定x轴所对应的数据列名称。
- data:输入的数据集,其数据类型必须为DataFrame。
- kind:用于定义图表类型的参数,可选值包括'scatter'(散点图)、'reg'(回归图)、'resid'(残差图)、'kde'(核密度图)和'hex'(蜂巢图)。
散点图
当需要直观展示两个变量在二维平面上的关系时,散点图是理想选择,它能有效辅助识别数据的分布规律。
import numpy as np
import seaborn as sns
import pandas as pd
import matplotlib.pyplot as plt
df =pd.DataFrame({'x':np.random.normal(size=500),
'y':np.random.normal(size=500)})
sns.jointplot(x='x',y='y',data=df,kind='reg')
plt.show()
双变量散点图示例:

- 从结果可以看出,函数不仅能展示两个变量间的联合关系,还能同时呈现每个单变量的分布情况。
- 若将函数中的kind参数设置为'reg',即可执行简单的线性模型拟合。
- 此外,该函数会在坐标系的上方和右侧分别绘制出两个变量的直方图和核密度图,以辅助分布观察。
蜂巢图
前文展示了联合散点图,但若数据间不存在明确的线性关系,散点图可能会因大量重叠点而无法清晰反映数据的密集与稀疏程度。此时,使用蜂巢图来观察数据分布更为适宜。
绘制蜂巢图同样使用函数,只需将kind参数更改为'hex'即可。
import numpy as np
import seaborn as sns
import pandas as pd
import matplotlib.pyplot as plt
df =pd.DataFrame({'x':np.random.normal(size=500),
'y':np.random.normal(size=500)})
sns.jointplot(x='x',y='y',data=df,kind='hex')
plt.show()

在蜂巢图中,每个六边形代表一个数据范围,颜色深浅表示该范围内的数据量:颜色越白表示数据量越小,颜色越深表示数据量越大。当数据量较大时,这种方式能更清晰地揭示数据分布情况。
密度图
在单变量分析中,我们常绘制概率密度曲线;在双变量分析中,同样可以使用密度图来解析数据分布。绘制密度图仍使用函数,只需将kind参数更改为'kde'。
import numpy as np
import seaborn as sns
import pandas as pd
import matplotlib.pyplot as plt
df =pd.DataFrame({'x':np.random.normal(size=500),
'y':np.random.normal(size=500)})
sns.jointplot(x='x',y='y',data=df,kind='kde')
plt.show()

从图形可见,双变量密度图通过封闭但不规则的曲线来表示,数据密度越高区域颜色越深,密度越低区域颜色越浅。
g = sns.jointplot(data=x_data, x=x, y=y) g.plot_joint(sns.kdeplot, color="r", zorder=0, levels=6) g.plot_marginals(sns.rugplot, color="r", height=-.15, clip_on=False)

sns.jointplot(
data=x_data, x=x, y=y,
marker="+", s=100, marginal_kws=dict(bins=25, fill=False),
)

以上即为Seaborn绘制双变量联合分布图的详细示例,更多关于Seaborn绘制双变量联合分布图的内容,敬请关注本站其他相关文章!
免责声明:本文内容仅供参考,不代表本站观点。转载或引用请注明出处。









