Seaborn 线性回归图函数
线性回归图,也叫做 “回归图”,它主要用于表现两个变量之间的线性关系。线性回归图建立在 “Seaborn 散点图” 的基础上,它会在散点图上面增加一条直线(也可能是曲线)。对于这条直线来说,它是使用最小二乘法预测的两个变量的关系:y = ax + b。
在 Seaborn 中,我们可以使用 regplot() 函数来绘制一个线性回归图。
语法:
sns.regplot(data, x, y)说明:
regplot() 函数接收以下主要参数。
data(可选):用于定义数据部分,它是一个 DataFrame。x(可选):用于指定 DataFrame 的哪一列作为 x 轴坐标。y(可选):用于指定 DataFrame 的哪一列作为 y 轴坐标。
regplot() 和 scatterplot() 这两个函数的使用语法几乎是一样的,小伙伴们好好对比一下,这样可以加深理解和记忆。
示例 1:Seaborn 绘制线性回归图
import pandas as pd
import matplotlib.pyplot as plt
import seaborn as sns
# 设置
sns.set_theme(rc={'font.sans-serif': 'SimHei', 'axes.unicode_minus': False})
# 数据
data = [
[1, 16],
[2, 18],
[3, 20],
[4, 21],
[5, 21],
[6, 23],
[7, 24],
[8, 24],
[9, 26],
[10, 27]
]
df = pd.DataFrame(data, columns=['A列', 'B列'])
# 绘图
sns.regplot(data=df, x='A列', y='B列')
# 显示
plt.show()运行之后,效果如下图所示。

分析:
regplot() 函数可以同时绘制一组散点、一条回归线以及该回归的 95% 置信区间。
Seaborn 线性回归图案例
Seaborn 内置了一个数据集 tips,该数据集保存的是某餐厅的营业情况,包括账单、小费、客人信息等,部分内容如下图所示。需要说明的是,“size” 这一列指的是客人订的餐桌类型,比如有些是 2 人桌、有些是 3 人桌等。

示例 2:Seaborn 基本线性回归图
import matplotlib.pyplot as plt
import seaborn as sns
# 设置
sns.set_theme(rc={'font.sans-serif': 'SimHei', 'axes.unicode_minus': False})
# 加载内置数据集
df = sns.load_dataset('tips')
# 重命名列
column_map = {
'total_bill': '账单',
'tip': '小费',
'sex': '性别',
'smoker': '是否吸烟',
'day': '星期',
'time': '餐段',
'size': '人数'
}
df.rename(columns=column_map, inplace=True)
# 绘制图表
sns.regplot(data=df, x='账单', y='小费')
# 显示
plt.show()运行之后,效果如下图所示。

分析:
sns.regplot(data=df, x='账单', y='小费') 表示将 “账单” 这一列设置为 x 轴坐标,并且将 “小费” 这一列设置为 y 轴坐标。
示例 3:改变颜色
import matplotlib.pyplot as plt
import seaborn as sns
# 设置
sns.set_theme(rc={'font.sans-serif': 'SimHei', 'axes.unicode_minus': False})
# 加载内置数据集
df = sns.load_dataset('tips')
# 重命名列
column_map = {
'total_bill': '账单',
'tip': '小费',
'sex': '性别',
'smoker': '是否吸烟',
'day': '星期',
'time': '餐段',
'size': '人数'
}
df.rename(columns=column_map, inplace=True)
# 绘制图表
sns.regplot(data=df, x='账单', y='小费', color='orangered')
# 显示
plt.show()运行之后,效果如下图所示。

分析:
如果想要改变线性回归图的整体颜色,我们可以使用 color 这个参数来实现。其中 color 的值可以是关键字(如 'red'),也可以是十六进制 RGB 值(如 '#FFFF00')。
示例 4:散点外观
import matplotlib.pyplot as plt
import seaborn as sns
# 设置
sns.set_theme(rc={'font.sans-serif': 'SimHei', 'axes.unicode_minus': False})
# 加载内置数据集
df = sns.load_dataset('tips')
# 重命名列
column_map = {
'total_bill': '账单',
'tip': '小费',
'sex': '性别',
'smoker': '是否吸烟',
'day': '星期',
'time': '餐段',
'size': '人数'
}
df.rename(columns=column_map, inplace=True)
# 绘制图表
sns.regplot(data=df, x='账单', y='小费', marker='x')
# 显示
plt.show()运行之后,效果如下图所示。

分析:
如果想要改变散点的外观,我们可以使用 marker 这个参数来实现。其中,Seaborn 中的 marker 参数继承了 Matplotlib 中的 marker 参数,两者的取值是一样的。
示例 5:置信区间
import matplotlib.pyplot as plt
import seaborn as sns
# 设置
sns.set_theme(rc={'font.sans-serif': 'SimHei', 'axes.unicode_minus': False})
# 加载内置数据集
df = sns.load_dataset('tips')
# 重命名列
column_map = {
'total_bill': '账单',
'tip': '小费',
'sex': '性别',
'smoker': '是否吸烟',
'day': '星期',
'time': '餐段',
'size': '人数'
}
df.rename(columns=column_map, inplace=True)
# 绘制图表
sns.regplot(data=df, x='账单', y='小费', marker='x', ci=68)
# 显示
plt.show()运行之后,效果如下图所示。

分析:
ci=68 表示使用 68% 的置信区间。“置信区间” 其实是统计学的一个术语,它指的是由样本统计量所构造的总体参数的估计区间。默认情况下,线性回归图使用的是 95% 的置信区间。
最后,我们来总结一下 regplot() 函数的参数,常用的如下表所示。除了这些常用参数,regplot() 还提供了非常多关于统计学方面的参数,小伙伴们有自行查看一下官方文档。
| 参数 | 说明 |
|---|---|
| data | 数据部分 |
| x | x 轴坐标 |
| y | y 轴坐标 |
| color | 整体颜色 |
| marker | 散点外观 |
| ci | 置信区间 |
注意: regplot() 函数是轴级函数,不支持 hue 参数(即不能通过颜色自动分组)。如果需要在一个图表中对不同类别(如男性/女性)分别绘制回归线,我们应该使用 sns.lmplot() 函数。
