如何在pairplot非对角段拟合全局回归线并保留hue数据点区分
实现全局回归线的Iris Pairplot方案
可以实现,核心思路是先绘制带类别颜色的散点对图,再手动给每个子图添加基于全局数据集的回归线。具体代码如下:
步骤1:绘制分类散点Pairplot
先生成只包含分类散点的pairplot,避免自动生成分组回归线:
import seaborn as sns import matplotlib.pyplot as plt import pandas as pd # 加载Iris数据集(若已有自定义df可跳过该行) df = sns.load_dataset("iris") # 绘制带hue区分的散点对图,仅保留左下三角 iris_pairplot = sns.pairplot( df, hue="variety", palette="Dark2", height=3, aspect=1, corner=True, kind="scatter" # 指定只画散点,不自动生成分组回归线 )
步骤2:批量添加全局回归线
遍历pairplot的所有子图,用regplot基于全量数据拟合回归线,关闭散点绘制避免重复:
# 获取数据集的数值型特征列 numeric_cols = df.select_dtypes(include=['float64']).columns # 遍历左下三角的每个子图 for i in range(len(numeric_cols)): for j in range(i): ax = iris_pairplot.axes[i, j] # 获取当前子图对应的x、y特征列名 x_col = numeric_cols[j] y_col = numeric_cols[i] # 添加全局回归线,设置统一颜色与线宽 sns.regplot( data=df, x=x_col, y=y_col, ax=ax, scatter=False, color="black", line_kws={"linewidth": 1.5} )
步骤3:调整布局并保存
最后设置标题、优化布局并导出图片:
iris_pairplot.fig.suptitle("Pairplot of traits for full Iris sample", fontsize="xx-large") plt.tight_layout() plt.savefig('iris_pairplot.png') plt.show()
效果说明
这样生成的图中,散点会按variety类别区分颜色,而每条回归线都是基于整个Iris数据集拟合的全局线,不会按类别拆分。尽管regplot是单图工具,但通过遍历pairplot的子图集合,可以批量完成所有散点图的回归线添加。
内容的提问来源于stack exchange,提问作者jmce23
相关产品推荐
相关产品推荐

