tft每日頭條

 > 生活

 > python用seaborn畫圖

python用seaborn畫圖

生活 更新时间:2024-06-22 18:46:09

在《Python可視化Seaborn庫詳解——繪圖設置 》一文中,我們介紹了Seaborn庫的繪圖參數設置,本文我們将介紹具體的繪圖方法。

其實雖然Seaborn庫看着繪圖函數多,但有幾個函數的泛化性非常強,通過參數的設置是可以繪出多種圖形的。為了便于掌握這些函數,本文會對這些方法進行歸納整理,力争做到提綱挈領的目的。

繪圖方法分類

結合圖形的性質,将常規的可視化圖形分為了三類。

python用seaborn畫圖(Python可視化Seaborn庫詳解繪圖方法)1

其中,線性關系所涉及到的是折線圖和散點圖,這兩類圖形在日常運用中非常常見;分類關系主要是描述不同維度下數據的統計結果,如條形圖、箱圖等;組合關系就類似于高級程序語言,它是由不同的基礎圖形組合而來的。

下面我們将一一介紹這些繪圖方法。

線性關系可視化

我們用泰坦尼克号數據作為案例,首先進行數據準備。

importseabornassns importpandasaspd importnumpyasnp data_raw=pd.read_csv("數據源/Titanic/train.csv") df=data_raw.copy() df.columns=[x.lower()forxindf.columns]

  • relplotrelplot函數和待會要介紹的catplot函數一樣,均是屬于一般型方法,它通過kind參數可分别作折線圖和散點圖,而且也可通過col和row參數進行分面。另外,該函數要求的數據格式必須是DataFrame。下圖為該函數的繪圖。

sns.relplot(x="passengerid",y="age",col="pclass",hue=None, row=None,kind='scatter',data=df) #kind為line,scatter;col表示按照該列進行分列繪圖 #下面是具體的折線圖和散點圖函數,但這兩種方法均不能進行分面 sns.lineplot(x="passengerid",y="age",data=df) sns.scatterplot(x="passengerid",y="age",data=df)

python用seaborn畫圖(Python可視化Seaborn庫詳解繪圖方法)2

分類關系可視化

分類關系有兩個一般性繪圖方法:catplot和distplot。

  • catplot

該函數可以繪制八種分類圖,并可以進行分面。每種分類圖也有相應的函數,可以進行更細緻的參數設置,但均不能進行分面。

sns.catplot(x="survived",y="age",hue=None,row=None,col=None, data=df,kind=j,ax=axes[i]) #hue對X軸進行二次分組,row按行分面,row按列分面,kind控制圖形種類, #有strip,swarm,box,violin,boxen,point,bar,count,strip為默認值 fig,axes=plt.subplots(3,3,figsize=(30,24)) ax=axes.flatten() sns.stripplot(x="survived",y="age",data=df,ax=ax[0]) #條形散點圖 sns.swarmplot(x="survived",y="age",data=df,ax=ax[1]) #避免散點重疊的條形散點圖 sns.boxplot(x="survived",y="age",data=df,ax=ax[2]) #箱線圖 sns.countplot(x="survived",data=df,ax=ax[3]) #統計圖 sns.barplot(x="survived",y="age",data=df,ax=ax[4]) #條形圖 sns.violinplot(x="survived",y="age",data=df,ax=ax[5]) #小提琴圖 sns.boxenplot(x="survived",y="age",data=df,ax=ax[6]) #增強箱圖 sns.pointplot(x="survived",y="age",data=df,ax=ax[7]) #點圖

python用seaborn畫圖(Python可視化Seaborn庫詳解繪圖方法)3

上圖為八種不同的分類圖。

  • distplot

直方圖是較為特殊的分類關系圖,雖然它屬于分布函數,但也可視為一種分類。該函數通過hist和kde參數可控制繪制的圖是直方圖還是密度圖,或是二者的結合。

fig,axes=plt.subplots(1,2,figsize=(12,5)) sns.distplot(df["age"],bins=[0,20,40,60,80,100],hist=True,kde=False,ax=axes[0]) sns.distplot(df["age"],bins=[0,20,40,60,80,100],hist=False,kde=True,ax=axes[1]) sns.kdeplot(df["age"],shade=True,vertical=False) #核密度曲線

python用seaborn畫圖(Python可視化Seaborn庫詳解繪圖方法)4

組合關系可視化

組合關系包含的都是一些較為複雜的圖,本文介紹三種。

  • pairplot

該函數主要描述數據變量兩兩之間的關系圖,默認都是散點圖。

sns.heatmap(data=df[["age","sex","pclass","fare"]].corr(),linecolor="white",annot=True,linewidths=0.1,cmap='YlGnBu') #cmap即colormap plt的顔色對象,annot系數值是否顯示, #矩陣數據集,行為矩陣的列名稱,列為矩陣的行索引,如果是dataframe,則行為行索引

python用seaborn畫圖(Python可視化Seaborn庫詳解繪圖方法)5

  • heatmap

熱力圖是一款非常熱門的圖形,通過顔色來反映數據之間的關系。

sns.heatmap(data=df[["age","sex","pclass","fare"]].corr(),linecolor="white", annot=True,linewidths=0.1) #annot系數值是否顯示 #data最後是矩陣數據集,圖形的行為矩陣的列,列為矩陣的行索引,如果是dataframe,則行為行索引

python用seaborn畫圖(Python可視化Seaborn庫詳解繪圖方法)6

  • factorplot與FacetGrid

這是兩個分面函數,分面的意思就是在一張畫布中畫多個圖形。

sns.factorplot(x="survived", y="age",row="sex",col="pclass", data=df, kind="strip") #多面闆繪圖

python用seaborn畫圖(Python可視化Seaborn庫詳解繪圖方法)7

g=sns.FacetGrid(data=df,row="sex",col="pclass") #先畫出輪廓 g.map(sns.stripplot,"survived","age") #進行補充

python用seaborn畫圖(Python可視化Seaborn庫詳解繪圖方法)8

其實這些分面圖形通過catplot方面也是可以實現的。

sns.catplot(x="survived",y="age",col="pclass",hue=None, row="sex",kind='strip',data=df)

python用seaborn畫圖(Python可視化Seaborn庫詳解繪圖方法)9

結語

将這些方法進行歸類後就會發現,熟記并掌握這些函數變得容易多了。其實,可視化的原理并不複雜,複雜的隻是繪圖細節部分。因為每種組成部分都有衆多的參數,參數還有不同的取值。

當然了,常規的可視化需求我們采用默認設置就足夠了!

,

更多精彩资讯请关注tft每日頭條,我们将持续为您更新最新资讯!

查看全部

相关生活资讯推荐

热门生活资讯推荐

网友关注

Copyright 2023-2024 - www.tftnews.com All Rights Reserved