python创建服从正态分布的频次直方图和KDE图

    xiaoxiao2023-10-31  162

    画频次直方图需要先用numpy生成服从正态分布的数据,然后用matplotlib画图。其中seaborn也是python的一个数据可视化的库。用seaborn画图比matplotlib更方便和好看点,其底层也是matplotlib.

    import numpy as np from numpy.linalg import cholesky import matplotlib.pyplot as plt import seaborn as sns sns.set()

    1.绘制一维正态分布直方图

    data=np.random.normal(0,1,1000)#生成一组期望值=0,标准差=1的标准正太分布数组,数组中有1000个元素 plt.hist(data,bins=10,alpha=0.5) data2=np.random.normal(0,1,1000)#生成第二组数据 plt.hist(data2,bins=10,alpha=0.5)

     

    还可以用np.random.randn生成正态分布数据,sigma是标准差,mu是期望值

    data= sigma* np.random.randn(1000) + mu

     2.用KDE获取变量分布的平滑估计。

    sns.kdeplot(data,shade=True) sns.kdeplot(data2,shade=True)

     

     3.频次直方图和KDE的结合

    sns.distplot(data) sns.distplot(data2)

    4.绘制二维KDE图

    当输入的数据是二维时,sns.kdeplot就可绘制一个二维的数据可视化图。

    data0=pd.DataFrame(np.array([data,data2]).T,columns=['x','y'])#将data,data2封装成DataFrame的x,y列,方便后面进行联合分布。 sns.kdeplot(data0)

     

    绘制两个变量的联合分布与单变量的独立分布。

    with sns.axes_style('white'):#使用白色背景 sns.jointplot('x','y',data0,kind='kde')

    修改jointplot的参数,用六边形块代替频次直方图

    同时绘制了相对应的散点图

    最新回复(0)