Seaborn绘制核密度曲线实例详解
2019-01-20
技术
在频率分布直方图中,当样本容量充分放大到极限时,组距极限缩短,这个时候频率直方图中的阶梯折线就会演变成一条光滑的曲线,这条曲线就称为总体的密度分布曲线。
这篇文章将详细介绍如何使用 Python 绘图库 Seaborn 和 Pandas 里的 iris 鸢尾花数据集来绘制不同形式的核密度曲线。
1.基本密度曲线
import seaborn as sns
import pandas as pd
sns.set(color_codes=True)
sns.set_style("white")
df = pd.read_csv('iris.csv')
sns.kdeplot(df['sepal_width'])

使用seaborn画核密度曲线,只需要使用kdeplot就行,注意,密度曲线只需要一个变量就可以了,这里我们选用的是sepal_width这一列。
2.添加阴影的密度曲线
import seaborn as sns
import pandas as pd
sns.set(color_codes=True)
sns.set_style("white")
df = pd.read_csv('iris.csv')
sns.kdeplot(df['sepal_width'], fill=True)

在新版 Seaborn 里,更推荐使用 fill=True 来显示填充效果。
3.水平方向密度曲线
import seaborn as sns
import pandas as pd
sns.set(color_codes=True)
sns.set_style("white")
df = pd.read_csv('iris.csv')
sns.kdeplot(y=df['sepal_width'], fill=True)

如果想让密度曲线沿纵轴展开,直接把变量传给 y= 会更直观。
4.频率宽度调整
import seaborn as sns
import pandas as pd
sns.set(color_codes=True)
sns.set_style("white")
df = pd.read_csv('iris.csv')
p1 = sns.kdeplot(df['sepal_width'], fill=True, bw_adjust=.5, color="red")
p1 = sns.kdeplot(df['sepal_width'], fill=True, bw_adjust=.05, color="blue")

由于不同的带宽设置会让同一组数据得到不同的密度曲线,带宽越小,曲线通常越不平滑。
5.比较多个变量的密度曲线
import seaborn as sns
import pandas as pd
sns.set(color_codes=True)
sns.set_style("white")
df = pd.read_csv('iris.csv')
p1=sns.kdeplot(df['sepal_width'], fill=True, color="red")
p1=sns.kdeplot(df['sepal_length'], fill=True, color="blue")

多个变量我们就画两个密度图放一起。
6.两变量点的密度曲线
import seaborn as sns
import pandas as pd
sns.set(color_codes=True)
sns.set_style("white")
df = pd.read_csv('iris.csv')
sns.kdeplot(data=df, x='sepal_width', y='sepal_length', fill=True, color="red")

需要注意的是,这里炫酷的地图一般的密度曲线跟前一个图是不一样的概念,一个是多个变量的分别对应的密度曲线,这个是一个二维数据的密度曲线,x,y是作为一个组合出现的。
总结:
针对如何使用 Python 的 Seaborn 包画出不同形式的核密度图,本文对 kdeplot 做了一个入门式整理。更多参数和新版用法,请参考官方文档。
- 原文作者:春江暮客
- 原文链接:https://www.bobobk.com/263.html
- 版权声明:本作品采用 知识共享署名-非商业性使用-禁止演绎 4.0 国际许可协议 进行许可,非商业转载请注明出处(作者,原文链接),商业转载请联系作者获得授权。