python創建服從正態分佈的頻次直方圖和KDE圖

畫頻次直方圖需要先用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的參數,用六邊形塊代替頻次直方圖

同時繪製了相對應的散點圖

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章