![](https://img.laitimes.com/img/9ZDMuAjOiMmIsIjOiQnIsICM0ITMvw1dvwlMvwlM3VWaWV2Zh1WaDdTJwlmc0N3LcRnbllmcv1yb0VXYvwlMyd2bNV2Zh1Wa-cmbw5SNiRTYxgTOxM2M2ATYzYjYtUDMxQDNzUTMvw1cldWYtl2XkF2bsBXdvw1bp5SdoNnbhlmauMXZnFWbp1CZh9GbwV3Lc9CX6MHc0RHaiojIsJye.png)
這篇文章是Python可視化seaborn系列的第二篇文章,本文将詳解seaborn如何探索資料的分布。
單變量
直方圖 displot
seaborn.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)
bins → 箱數
hist、ked、rug → bool,是否顯示箱/密度曲線/資料分布
norm_hist → 直方圖是否按照密度來顯示,如果為False,顯示計數
{hist,kde,rug,fit} _kws:字典,對應部分的各種參數。
vertical → 是否水準顯示
fit → 可結合scipy庫在圖像上做拟合
label → 圖例
axlabel → x軸标注
核密度估計圖 kdeplot
核密度估計的步驟:
每一個觀測附近用一個正态分布曲線近似
疊加所有觀測的正态分布曲線
歸一化
seaborn.kdeplot(data,data2 = None,shade = False,vertical = False,kernel ='gau',bw ='scott',gridsize = 100,cut = 3,clip = None,legend = True,cumulative = False,shade_lowest = True,cbar = False,cbar_ax =無,cbar_kws =無,ax =無, kwargs )
shade: 如果為True,則用顔色填充KDE曲線下方的區域(或者在資料為雙變量時用顔色填充的輪廓)
kernel: {‘gau’|‘cos’|‘biw’|‘epa’|‘tri’|‘triw’} 用于拟合的核,雙變量值能用高斯核(gau)
bw: {'scott'|'silverman'|标量|一對标量} 确定核的大小,近似了解為拟合程度,bw越大,曲線越平緩。
gridsize:int, 網格中的離散點數
cumulative :是否繪制累積分布
cbar:參數若為True,則會添加一個顔色條(顔色條在雙變量kde圖像中才有)
核密度分布圖不但能繪制單個變量的,也能繪制雙變量!!!
雙變量
jointplot
seaborn.jointplot(x,y,data = None,kind ='scatter',color = None,size = 6,ratio = 5,space = 0.2,dropna = True,xlim = None,ylim = None,joint_kws = None,marginal_kws =None,annot_kws =None, kwargs )
該函數是JoinGrid類的一個輕量級界面,如果想更加靈活的繪制,可以使用JoinGrid函數
kind: 設定類型:“scatter”、“reg”、“resid”、“kde”、“hex”
size: int, 圖像大小(圖像自動調整為正方形)
radio: int, 主圖與邊緣圖的高度比
space: # 設定主圖和邊緣圖的間距
{x,y} lim :在繪圖之前設定軸限制
{joint,marginal,annot} _kws:dicts 繪圖元件的其他關鍵字參數
seaborn會直接給出變量的皮爾遜相關系數和P值
pearson相關系數計算:
p:樣本間的差異由抽樣誤差所緻的機率小于p.
JointGrid
前面講過jointplot其實是JoinGrid的一個封裝,要想有更靈活的設定,可以使用JoinGrid類
__init__(x,y,data = None,size = 6,ratio = 5,space = 0.2,dropna = True,xlim = None,ylim = None)
方法:
plot(joint_func,marginal_func ,annot_func)→ 繪制完整的圖形
plot_joint(func,** kwargs)→ 繪制雙變量圖形
plot_marginals(func,** kwargs)→ 繪制邊緣單變量圖形
savefig( args,* kwargs)→ 儲存
set_axis_labels([xlabel,ylabel])→ 在雙變量軸上設定軸标簽。
探索兩兩變量之間的關系
通常我們的資料并不是隻有一個或者兩個變量,那麼對于多個變量,我們常需要探索兩兩變量之間的分布及關系這是我們就需要使用pairplot函數 或者是PairGrid類
pairplot
seaborn.pairplot(data,hue = None,hue_order = None,palette = None,vars = None,x_vars = None,y_vars = None,kind ='scatter',diag_kind ='auto',markers = None,s = 2.5,aspect = 1,dropna = True,plot_kws = None,diag_kws = None,grid_kws = None)
hue: string(變量名) : 顔色将按照指定的變量分類
hue_order : list 設定調色闆色調變量級别
palette : 調色闆
vars : list 變量名稱清單,否則使用所有數值型變量的列
markers: 點樣式
sepal_length sepal_width petal_length petal_width species
5.1 3.5 1.4 0.2 setosa
4.9 3.0 1.4 0.2 setosa
4.7 3.2 1.3 0.2 setosa
4.6 3.1 1.5 0.2 setosa
5.0 3.6 1.4 0.2 setosa
PairGrid
相當于jointplot 和 JointGrid的關系,PairGrid 對矩陣散點圖有着更為靈活的控制
__init__(data,hue = None,hue_order = None,palette = None,hue_kws = None,vars = None,x_vars = None,y_vars = None,diag_sharey = True,size = 2.5,aspect = 1,despine = True,dropna = True)
方法:
add_legend([legend_data,title,label_order])繪制一個圖例,可能将其放在軸外并調整圖形大小。
map_diag(func,** kwargs):在每個對角線子圖上繪制具有單變量函數的圖。
map_lower(func,** kwargs):在下對角線子圖上繪制具有雙變量函數的圖。
map_upper(func,** kwargs):在上對角線子圖上繪制具有雙變量函數的圖
map_offdiag(func,** kwargs):在非對角線子圖上繪制具有雙變量函數的圖。
set(** kwargs):在每個子圖集Axes上設定屬性。
看再多次,都不如自己親自動手寫一次,隻有在實際應用中不斷練習,思考,調整。才能了解掌握資料可視化的技能。
轉載于:https://www.cnblogs.com/l520/p/10275882.html