sns.distplot()集合了matplotlib的hist()於sns.kdeplot()功能,增了rugplot分布觀測顯示與理由scipy庫fit擬合參數分布的新穎用途
#參數如下 sns.distplot(a, bins=None, hist=True, kde=True, rug=False, fit=None, hist_kws=None, kde_kws=None, rug_kws=None, fit_kws=None, color=None, vertical=False, norm_hist=False, axlabel=None, label=None, ax=None)
直方圖:先分箱,然后計算每個分箱頻數的數據分布,
和條形圖的區別,條形圖有空隙,直方圖沒有,條形圖一般用於類別特征,直方圖一般用於數字特征(連續型)
多用於y值和數字(連續型)特征的分布畫圖
import matplotlib.pyplot as plt import numpy as np import pandas as pd import seaborn as sns sns.set() #切換到sns的默認運行配置 x=np.random.randn(100) sns.distplot(x)
通過hist和kde參數調節是否顯示直方圖及核密度估計(默認hist,kde均為True)
fig,axes=plt.subplots(1,3) #創建一個1行三列的圖片 sns.distplot(x,ax=axes[0]) sns.distplot(x,hist=False,ax=axes[1]) #不顯示直方圖 sns.distplot(x,kde=False,ax=axes[2]) #不顯示核密度
bins:int或list,控制直方圖的划分
#bins fig,axes=plt.subplots(1,2) sns.distplot(x,kde=False,bins=20,ax=axes[0]) #分成20個區間 sns.distplot(x,kde=False,bins=[x for x in range(4)],ax=axes[1]) #以0,1,2,3為分割點,形成區間[0,1],[1,2],[2,3],區間外的值不計入。
rag:控制是否生成觀測數值的小細條
#rag fig,axes=plt.subplots(1,2) sns.distplot(x,rug=True,ax=axes[0]) #左圖 sns.distplot(x,ax=axes[1]) #右圖
fit:控制擬合的參數分布圖形,能夠直觀地評估它與觀察數據的對應關系(黑色線條為確定的分布)
#fit from scipy.stats import * sns.distplot(x,hist=False,fit=norm) #擬合標准正態分布
hist_kws, kde_kws, rug_kws, fit_kws參數接收字典類型,可以自行定義更多高級的樣式
# sns.distplot(x,kde_kws={"label":"KDE"},vertical=True,color="y")
norm_hist:若為True, 則直方圖高度顯示密度而非計數(含有kde圖像中默認為True)
#norm_hist fig,axes=plt.subplots(1,2) sns.distplot(x,norm_hist=True,kde=False,ax=axes[0]) #左圖 sns.distplot(x,kde=False,ax=axes[1]) #右圖
全部代碼
1 import matplotlib.pyplot as plt 2 import numpy as np 3 import pandas as pd 4 import seaborn as sns 5 sns.set() #切換到sns的默認運行配置 6 7 x=np.random.randn(100) 8 sns.distplot(x) 9 10 11 fig,axes=plt.subplots(1,3) #創建一個1行三列的圖片 12 sns.distplot(x,ax=axes[0]) 13 sns.distplot(x,hist=False,ax=axes[1]) #不顯示直方圖 14 sns.distplot(x,kde=False,ax=axes[2]) #不顯示核密度 15 16 17 #bins 18 fig,axes=plt.subplots(1,2) 19 sns.distplot(x,kde=False,bins=20,ax=axes[0]) #分成20個區間 20 sns.distplot(x,kde=False,bins=[x for x in range(4)],ax=axes[1]) #以0,1,2,3為分割點,形成區間[0,1],[1,2],[2,3],區間外的值不計入。 21 22 23 #rag 24 fig,axes=plt.subplots(1,2) 25 sns.distplot(x,rug=True,ax=axes[0]) #左圖 26 sns.distplot(x,ax=axes[1]) #右圖 27 28 29 #fit 30 from scipy.stats import * 31 sns.distplot(x,hist=False,fit=norm) #擬合標准正態分布 32 33 34 # 35 sns.distplot(x,kde_kws={"label":"KDE"},vertical=True,color="y") 36 37 #norm_hist 38 fig,axes=plt.subplots(1,2) 39 sns.distplot(x,norm_hist=True,kde=False,ax=axes[0]) #左圖 40 sns.distplot(x,kde=False,ax=axes[1]) #右圖