??本文介紹基于Python中seaborn模塊,實作聯合分布圖繪制的方法,
??聯合分布(Joint Distribution)圖是一種查看兩個或兩個以上變數之間兩兩相互關系的可視化圖,在資料分析操作中經常需要用到,一幅好看的聯合分布圖可以使得我們的資料分析更加具有可視性,讓大家眼前一亮,

??那么,本文就將用seaborn來實作聯合分布圖的繪制,seaborn是一個基于matplotlib的Python資料可視化模塊,借助于其,我們可以通過較為簡單的操作,繪制出各類動人的圖片,
??首先,引入需要的模塊,
import pandas as pd
import seaborn as sns
??接下來,將存盤有我們需要繪制聯合分布圖資料的檔案匯入,因為我是將資料存盤于.csv檔案,所以我這里用pd.read_csv來實作資料的匯入,我的資料在.csv檔案中長如下圖的樣子,其中共有107行,包括106行樣本加1行列標題;以及10列,我們就看前幾行即可:

??匯入資料的代碼如下:
data_path="G:/black_carbon_paper/97_BC20201230/00_Original/AllData5Factor.csv"
column_names=['FID','ID','X','Y','BC','Temp','Slope','RoDen','POI','GAIA']
my_data=https://www.cnblogs.com/fkxxgis/p/pd.read_csv(data_path,names=column_names,header=0)
??其中,data_path是.csv檔案存盤位置與檔案名,column_names是匯入的資料在Python中我希望其顯示的名字(為什么原始資料本來就有列標題但還要再設定這個column_names,本文下方有介紹);header=0表示.csv檔案中的0行(也就是我們一般而言的第一行)是列標題;如果大家的初始資料沒有列標題,即其中的第一行就是資料自身,那么就需要設定header=None,
??執行上述代碼,我們將匯入的資料列印,看看在Python中其長什么樣子,
print(my_data)

??可以看到,匯入Python后資料的第7列,原本叫做Slope_1,但是設定我們自己命名的column_names后,其就將原本資料的列標題改為我們自己設定的標題Slope了,如果我們不設定column_names,匯入的資料就是這個樣子:

??可以看到,我們不用column_names的話,資料匯入Python后列名就是原始的Slope_1,
??我們繼續,其實用seaborn繪制聯合分布圖非常簡單(這就是seaborn對matplotlib改進,讓我們繪制復雜的圖時候不需要太麻煩),僅僅只有一下兩句代碼:
joint_columns=['BC','Temp','Slope','RoDen','POI','GAIA']
sns.pairplot(my_data[joint_columns],kind='reg',diag_kind='kde')
??其中,第一句是定義我們想要參與繪制聯合分布圖的列,將需要繪圖的列標題放入joint_column,可以看到,因為我的資料中,具有ID這種編號列,而肯定編號是不需要參與繪圖的,那么我們就不將其放入joint_column即可,
??第二句就是繪圖,kind表示聯合分布圖中非對角線圖的型別,可選'reg'與'scatter'、'kde'、'hist','reg'代表在圖片中加入一條擬合直線,'scatter'就是不加入這條直線,'kde'是等高線的形式,'hist'就是類似于柵格地圖的形式;diag_kind表示聯合分布圖中對角線圖的型別,可選'hist'與'kde','hist'代表直方圖,'kde'代表直方圖曲線化,
??以kind和diag_kind分別選擇'reg'和'kde'為例,繪圖結果如下:

??以kind和diag_kind分別選擇'scatter'和'hist'為例,繪圖結果如下:

??個人感覺第一幅圖好看些~
??不過,由于參與繪圖的變數個數比較多,因此使得圖中的字體有點看不清,可以加上一句代碼在sns.pairplot這句代碼的上面:
sns.set(font_scale=1.2)
??其中,font_scale就是字體的大小,后面的數字越大,字體就越大,以font_scale=1.2為例,讓我們看看效果:

??這樣子字體就大了~
轉載請註明出處,本文鏈接:https://www.uj5u.com/houduan/543726.html
標籤:Python
