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

这篇文章春江暮客将详细介绍如何使用python绘图库seaborn和panda里面的iris也就是鸢尾花卉数据集来绘制各种炫酷的密度曲线。

1.基本密度曲线

    import seaborn as sns
    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
    sns.set(color_codes=True)
    sns.set_style("white")
    df = pd.read_csv('iris.csv')
    sns.kdeplot(df['sepal_width'],shade=True)

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

在kdeplot画图时制定shadow即可。

3.水平方向密度曲线

    import seaborn as sns
    sns.set(color_codes=True)
    sns.set_style("white")
    df = pd.read_csv('iris.csv')
    sns.kdeplot(df['sepal_width'],shade=Truevertical=True)

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

vertical指定是否变成横向的密度曲线,虽然英文的意思是垂直的,不是很好理解的样子,但是效果就是变成水平方向。0-0

4.频率宽度调整

    import seaborn as sns
    sns.set(color_codes=True)
    sns.set_style("white")
    df = pd.read_csv('iris.csv')
    p1 = sns.kdeplot(df['sepal_width'], shade=True, bw=.5, color="red")
    p1 = sns.kdeplot(df['sepal_width'], shade=True, bw=.05, color="blue")

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

由于不同的频率宽度使得同一个数据得到的密度曲线不一样,频率宽度越小,会使得密度曲线越不平滑。

5.比较多个变量的密度曲线

    import seaborn as sns
    sns.set(color_codes=True)
    sns.set_style("white")
    df = pd.read_csv('iris.csv')
    p1=sns.kdeplot(df['sepal_width'], shade=True, color="red")
    p1=sns.kdeplot(df['sepal_length'], shade=True, color="blue")

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

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

6.两变量点的密度曲线


    import seaborn as sns
    sns.set(color_codes=True)
    sns.set_style("white")
    df = pd.read_csv('iris.csv')
    sns.kdeplot(df['sepal_width'],df['sepal_length'], shade=True, color="red")

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

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

总结:

针对如何使用python的seaborn包画出各种不同的炫酷的密度曲线图,本文进行了kdeplot函数的详细介绍,更多用法请参考官方文档