您的位置:

sns.lmplot:数据可视化的利器

一、sns.lmplot 点

sns.lmplot是用于绘制数据集线性回归模型拟合的可视化函数。一个基本用法是使用scatterplot()和lineplot()方法绘制两个变量之间的线性关系。

首先来看下面这段代码,它会生成一组随机的数据,然后通过sns.lmplot对它进行可视化:

import numpy as np
import seaborn as sns
import matplotlib.pyplot as plt

# create dataset
np.random.seed(0)
x = np.random.randn(100)
y = 2 * x + np.random.randn(100)

# plot data
sns.set_style("darkgrid")
sns.lmplot(x="x", y="y", data=pd.DataFrame({'x': x, 'y': y}), height=6)
plt.show()

运行上面的代码,会得到下面这张图:

我们可以看到上图中有很多蓝色的点,这些点代表着我们生成的随机数据。而在这些点之间,sns.lmplot绘制了一条黑色的拟合线,表示这两个变量之间大致的线性关系。我们可以根据这条线来预测未来的数据,或者判断两个变量之间是否有相关性。

二、sns.lmplot函数

sns.lmplot函数是Seaborn库的核心函数之一,它可以用于对数据集中的自变量和因变量进行可视化。具体来说,它可以绘制散点图、线性回归拟合线并可视化出它们之间的关系。

下面是sns.lmplot函数的一个例子:

import seaborn as sns
import matplotlib.pyplot as plt
sns.set(style="ticks")

# Load the example tips dataset
tips = sns.load_dataset("tips")

# Draw a linear regression plot
sns.lmplot(x="total_bill", y="tip", data=tips)

# Show the plot
plt.show()

上面的代码使用Seaborn内置的小费数据集进行可视化。我们要对该数据集的总账单和小费之间的关系进行可视化。运行上面的代码,我们就可以得到下面这张图:

通过这个图我们可以看到,随着账单总额的增加,小费的金额也随之增加,而且它们之间存在一定的线性关系。

三、sns.lmplot参数

sns.lmplot函数有很多参数可以调整。下面是几个常用的参数:

1. hue parameter

可以使用hue参数根据某个分类变量对数据进行分组,然后使用不同的颜色来表示不同的组别。例如:

import seaborn as sns
import matplotlib.pyplot as plt
sns.set(style="ticks")

# Load the example tips dataset
tips = sns.load_dataset("tips")

# Draw a linear regression plot
sns.lmplot(x="total_bill", y="tip", hue="smoker", data=tips)

# Show the plot
plt.show()

上面的代码使用Seaborn内置的小费数据集进行可视化,并根据吸烟者和非吸烟者对数据进行了分组。运行上面的代码,我们就可以得到下面这张图:

从图中我们可以看到,烟民和非烟民在总账单和小费之间的关系上有所区别。烟民的账单和小费之间呈现出更明显的线性关系。

2. col parameter

使用col参数可以根据某个分类变量对数据进行分组,然后将多个子图放在同一个图表上。例如:

import seaborn as sns
import matplotlib.pyplot as plt
sns.set(style="ticks")

# Load the example tips dataset
tips = sns.load_dataset("tips")

# Draw a linear regression plot
sns.lmplot(x="total_bill", y="tip", col="sex", data=tips)

# Show the plot
plt.show()

上面的代码根据顾客的性别对数据进行了分组,然后将男性和女性的数据可视化在了两个子图上。 运行上面的代码,我们就可以得到下面这张图:

从图中可以看出,男性和女性在账单和小费之间的关系上没有太大的区别。

四、sns.lmplot中markers

sns.lmplot函数中还有一个很有用的参数marker,可以用来指定散点的样式。例如:

import seaborn as sns
import matplotlib.pyplot as plt
sns.set(style="ticks")

# Load the example tips dataset
tips = sns.load_dataset("tips")

# Draw a linear regression plot
sns.lmplot(x="total_bill", y="tip", data=tips, markers=["o", "x"])

# Show the plot
plt.show()

上面的代码指定了两种不同的marker样式:圆圈和叉号。运行代码,我们就可以看到下面这张图:

可以看到,不同的marker样式可以使我们更清楚地看到数据的分布情况,以及线性关系的趋势。

五、sns.lmplot没有拟合线选取

sns.lmplot函数中有个参数fit_reg,默认为True,它表示是否要绘制拟合线。如果我们将fit_reg设置为False,则可视化结果中就不会出现拟合线。

import seaborn as sns
import matplotlib.pyplot as plt
sns.set(style="ticks")

# Load the example tips dataset
tips = sns.load_dataset("tips")

# Draw a linear regression plot
sns.lmplot(x="total_bill", y="tip", data=tips, fit_reg=False)

# Show the plot
plt.show()

上面的代码不会在可视化结果中绘制拟合线,并且只显示散点图。运行上面的代码,我们可以得到下面这张图:

这个可视化结果更加简单,但是有时候我们需要看到拟合线,以了解两个变量之间是否存在线性关系。

六、总结

sns.lmplot是一个强大的可视化函数,它可以帮助我们了解数据集中两个变量之间的线性关系。使用sns.lmplot函数时,我们可以指定很多参数,例如hue、col、markers等,来根据分类变量对数据进行分组,并且可以对散点图进行自定义。通过建立可视化模型,我们可以对数据集中的显性规律和潜在规律进行展示,让数据表象化,并从中获取信息来辅助我们的数据分析。