微信公眾號:「Python讀財」
如有問題或建議,請公眾號留言
Seaborn是基於matplotlib的Python視覺化庫。 它提供了一個高階介面來繪製有吸引力的統計圖形。Seaborn其實是在matplotlib的基礎上進行了更高階的API封裝,從而使得作圖更加容易,不需要經過大量的調整就能使你的圖變得精緻。
注:所有程式碼均在IPython notebook中實現
lmplot(迴歸圖)
lmplot是用來繪製迴歸圖的,透過lmplot我們可以直觀地總覽資料的內在關係
先總覽一下stripplot的API:
seaborn.lmplot(x, y, data, hue=None, col=None, row=None, palette=None, col_wrap=None, size=5, aspect=1, markers='o', sharex=True, sharey=True, hue_order=None, col_order=None, row_order=None, legend=True, legend_out=True, x_estimator=None, x_bins=None, x_ci='ci', scatter=True, fit_reg=True, ci=95, n_boot=1000, units=None, order=1, logistic=False, lowess=False, robust=False, logx=False, x_partial=None, y_partial=None, truncate=False, x_jitter=None, y_jitter=None, scatter_kws=None, line_kws=None)
可以看到lmplot的引數還是比較多的,接下來我們就挑一些常用的來講一下,有一些引數會涉及到一些統計學的知識。
老套路,先匯入相應的包:
import seaborn as sns
%matplotlib inline
sns.set(font_scale=1.5,style="white")
本次試用的資料集是Seaborn內建的tips小費資料集:
data=sns.load_dataset("tips")
data.head(5)
我們先來看一下lmplot是什麼樣的
sns.lmplot(x="total_bill",y="tip",data=data)
可以看到lmplot對所選資料集進行了一元線性迴歸,擬合出了一條最佳的直線,
接下來進入具體引數的演示。
col:
根據所指定屬性在列上分類
row:
根據所指定屬性在行上分類
sns.lmplot(x="total_bill",y="tip",data=data,row="sex",col="smoker")
結合我們的資料集,看上圖的橫縱座標就可以明白這兩個引數的用法
col_wrap:
指定每行的列數,最多等於col引數所對應的不同類別的數量
sns.lmplot(x="total_bill",y="tip",data=data,col="day",col_wrap=4)
sns.lmplot(x="total_bill",y="tip",data=data,col="day",col_wrap=2)
aspect:
控制圖的長寬比
sns.lmplot(x="total_bill",y="tip",data=data,aspect=1)
#長度比寬度等於一比一,即正方形
sns.lmplot(x="total_bill",y="tip",data=data,aspect=1.5)
#長度比寬度等於1:1.5,可以看到橫軸更長一點
sharex:
共享x軸刻度(預設為True)
sharey:
共享y軸刻度(預設為True)
sns.lmplot(x="total_bill",y="tip",data=data,row="sex",col="smoker",sharex=False)
#可以看到設定為False時,各個子圖的x軸的5#座標刻度是不一樣的
hue:
用於分類
sns.lmplot(x="total_bill",y="tip",data=data,hue="sex",palette="husl")
ci:
控制迴歸的置信區間(有學過統計學的同學們應該都是知道滴)
#顯示0.95的置信區間
sns.lmplot(x="total_bill",y="tip",data=data,ci=95)
x_jitter:
給x軸隨機增加噪音點
y_jitter:
給y軸隨機增加噪音點
設定這兩個引數不影響最後的迴歸直線
sns.lmplot(x="size",y="tip",data=data,x_jitter=False)
sns.lmplot(x="size",y="tip",data=data,x_jitter=True)
#可以看到剛才的一列一列的資料點被隨機
#打亂了,但不會影響到最後的迴歸直線
order:
控制進行迴歸的冪次(一次以上即是多項式迴歸)
sns.lmplot(x="total_bill",y="tip",data=data,order=1) #一元線性迴歸
sns.lmplot(x="total_bill",y="tip",data=data,order=2) #次數最高為2
sns.lmplot(x="total_bill",y="tip",data=data,order=3) #次數最高為3
還有一些引數涉及到了更深入的統計學知識,在這裡就不一一介紹了,有興趣的可以自行檢視官方文件!
關注我的公眾號「Python讀財」,後臺回覆「py」即可獲取Python學習資源禮包,還有python學習交流群哦!
本作品採用《CC 協議》,轉載必須註明作者和本文連結