一、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等,来根据分类变量对数据进行分组,并且可以对散点图进行自定义。通过建立可视化模型,我们可以对数据集中的显性规律和潜在规律进行展示,让数据表象化,并从中获取信息来辅助我们的数据分析。