春江暮客

春江暮客的个人学习分享网站

Seaborn绘制核密度曲线实例详解

2019-01-20 技术
Seaborn绘制核密度曲线实例详解

在频率分布直方图中,当样本容量充分放大到极限时,组距极限缩短,这个时候频率直方图中的阶梯折线就会演变成一条光滑的曲线,这条曲线就称为总体的密度分布曲线。

这篇文章将详细介绍如何使用 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绘制核密度曲线实例详解》

使用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绘制核密度曲线实例详解》

在新版 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)

《Seaborn绘制核密度曲线实例详解》

如果想让密度曲线沿纵轴展开,直接把变量传给 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")

《Seaborn绘制核密度曲线实例详解》

由于不同的带宽设置会让同一组数据得到不同的密度曲线,带宽越小,曲线通常越不平滑。

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")

《Seaborn绘制核密度曲线实例详解》

多个变量我们就画两个密度图放一起。

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")

《Seaborn绘制核密度曲线实例详解》

需要注意的是,这里炫酷的地图一般的密度曲线跟前一个图是不一样的概念,一个是多个变量的分别对应的密度曲线,这个是一个二维数据的密度曲线,x,y是作为一个组合出现的。

总结:

针对如何使用 Python 的 Seaborn 包画出不同形式的核密度图,本文对 kdeplot 做了一个入门式整理。更多参数和新版用法,请参考官方文档

友情链接

其它