Python 視覺化 | Seaborn5 分鐘入門 (四)——stripplot 和 swarmplot

Harry_03發表於2020-01-17

微信公眾號:「Python讀財」
如有問題或建議,請公眾號留言

Seaborn是基於matplotlib的Python視覺化庫。 它提供了一個高階介面來繪製有吸引力的統計圖形。Seaborn其實是在matplotlib的基礎上進行了更高階的API封裝,從而使得作圖更加容易,不需要經過大量的調整就能使你的圖變得精緻。

image

注:所有程式碼均在IPython notebook中實現


stripplot(分佈散點圖)

先總覽一下stripplot的API:

seaborn.stripplot(x=None, y=None, hue=None, data=None, order=None, hue_order=None, jitter=False, dodge=False, orient=None, color=None, palette=None, size=5, edgecolor='gray', linewidth=0, ax=None, *kwargs)

接下來就直接上程式碼演示,首先匯入相應的包,這個大家應該都很熟悉了。

import seaborn as sns
%matplotlib inline
sns.set(font_scale=1.5,style="white")
sns.set_context({"figure.figsize":(10,8)})

下面是本次演示所使用的資料集:

data=sns.load_dataset("tips")  
data.head()  

image

我們先來看一下stripplot是什麼樣的

sns.stripplot(x="time",y="total_bill", data=data) 

image

可以看到stripplot的作圖原理就是按照x屬性所對應的類別分別展示y屬性的值,適用於分類資料。上圖就是不同飯點的賬單總金額的散點圖。

接下來講解一下stripplot的主要引數,在這裡我們只講stripplot特有的一些引數,其他一些seaborn中常見引數的介紹可以翻看之前的文章。

x:設定分組統計欄位

y:設定分佈統計欄位

jitter:當資料點重合較多時,可用該引數做一些調整

sns.stripplot(x="time",y="total_bill",data=data,jitter=True)

可以看到,之前重合的資料點分散開了

image

在對time屬性分類後,利用hue引數進行內部的分類

sns.stripplot(x="time",y="total_bill",data=data,jitter=True,hue="day") 

image

那如果我想把組內的不同類別分開來顯示呢?這時候就用dodge引數

dodge:控制組內分類是否徹底分拆

sns.stripplot(x="time",y="total_bill",data=data,jitter=True,hue="day",dodge=True) 

image

order:對x引數所選欄位內的類別進行排序以及篩選

sns.stripplot(x="time",y="total_bill",data=data,jitter=True,
              hue="day",dodge=True,order=["Dinner","Lunch"])

image

可以看到x軸上原本的Dinner和Lunch類別的前後順序變了

sns.stripplot(x="time",y="total_bill",data=data,jitter=True,
              hue="day",dodge=True,order=["Dinner"]) 

image

可以看到x軸上原本的Lunch類別沒有了,stripplot的演示就到此為止


swarmplot(分簇散點圖)

sns.swarmplot(x=None, y=None, hue=None, data=None, order=None, hue_order=None, dodge=False, orient=None, color=None, palette=None, size=5, edgecolor='gray', linewidth=0, ax=None, *kwargs)

swarmplot和stripplot的用法其實差不多,我們來看看兩種圖之間有什麼區別,還是使用之前的資料集。

sns.swarmplot(x="day",y="total_bill",data=data)

image

可以看到swarmplot將不同類別的散點圖以樹狀來顯示,其他引數用法和stripplot一致,下面簡單演示一下。

sns.swarmplot(x="day",y="total_bill",data=data,hue="sex",dodge=True)

image

sns.swarmplot(x="day",y="total_bill",data=data,hue="sex",dodge=True,palette="husl")

image

sns.swarmplot(y="day",x="total_bill",data=data,hue="sex",dodge=True,palette="husl")

image

有關stripplot和swarmplot的演示就到此結束了,想進一步學習的童鞋可以檢視Seaborn的官方文件!以上內容是我結合官方文件和自己的一點理解寫成的,有什麼錯誤大家可以指出來並提提意見共同交流、進步,也希望我寫的這些能夠給閱讀完本文的你或或少的幫助!

關注我的公眾號「Python讀財」,後臺回覆「py」即可獲取Python學習資源禮包,還有Python學習交流群哦!

底部二維碼.png

本作品採用《CC 協議》,轉載必須註明作者和本文連結

相關文章