Python+seaborn實(shí)現(xiàn)聯(lián)合分布圖的繪制
本文介紹基于Python中seaborn模塊,實(shí)現(xiàn)聯(lián)合分布圖繪制的方法。
聯(lián)合分布(Joint Distribution)圖是一種查看兩個(gè)或兩個(gè)以上變量之間兩兩相互關(guān)系的可視化圖,在數(shù)據(jù)分析操作中經(jīng)常需要用到。一幅好看的聯(lián)合分布圖可以使得我們的數(shù)據(jù)分析更加具有可視性,讓大家眼前一亮。

那么,本文就將用seaborn來(lái)實(shí)現(xiàn)聯(lián)合分布圖的繪制。seaborn是一個(gè)基于matplotlib的Python數(shù)據(jù)可視化模塊,借助于其,我們可以通過(guò)較為簡(jiǎn)單的操作,繪制出各類(lèi)動(dòng)人的圖片。
首先,引入需要的模塊。
import pandas as pd import seaborn as sns
接下來(lái),將存儲(chǔ)有我們需要繪制聯(lián)合分布圖數(shù)據(jù)的文件導(dǎo)入。因?yàn)槲沂菍?shù)據(jù)存儲(chǔ)于.csv文件,所以我這里用pd.read_csv來(lái)實(shí)現(xiàn)數(shù)據(jù)的導(dǎo)入。我的數(shù)據(jù)在.csv文件中長(zhǎng)如下圖的樣子,其中共有107行,包括106行樣本加1行列標(biāo)題;以及10列。我們就看前幾行即可:

導(dǎo)入數(shù)據(jù)的代碼如下:
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=pd.read_csv(data_path,names=column_names,header=0)
其中,data_path是.csv文件存儲(chǔ)位置與文件名,column_names是導(dǎo)入的數(shù)據(jù)在Python中我希望其顯示的名字(為什么原始數(shù)據(jù)本來(lái)就有列標(biāo)題但還要再設(shè)置這個(gè)column_names,本文下方有介紹);header=0表示.csv文件中的0行(也就是我們一般而言的第一行)是列標(biāo)題;如果大家的初始數(shù)據(jù)沒(méi)有列標(biāo)題,即其中的第一行就是數(shù)據(jù)自身,那么就需要設(shè)置header=None。
執(zhí)行上述代碼,我們將導(dǎo)入的數(shù)據(jù)打印,看看在Python中其長(zhǎng)什么樣子。
print(my_data)

可以看到,導(dǎo)入Python后數(shù)據(jù)的第7列,原本叫做Slope_1,但是設(shè)置我們自己命名的column_names后,其就將原本數(shù)據(jù)的列標(biāo)題改為我們自己設(shè)定的標(biāo)題Slope了。如果我們不設(shè)置column_names,導(dǎo)入的數(shù)據(jù)就是這個(gè)樣子:

可以看到,我們不用column_names的話,數(shù)據(jù)導(dǎo)入Python后列名就是原始的Slope_1。
我們繼續(xù)。其實(shí)用seaborn繪制聯(lián)合分布圖非常簡(jiǎn)單(這就是seaborn對(duì)matplotlib改進(jìn),讓我們繪制復(fù)雜的圖時(shí)候不需要太麻煩),僅僅只有一下兩句代碼:
joint_columns=['BC','Temp','Slope','RoDen','POI','GAIA'] sns.pairplot(my_data[joint_columns],kind='reg',diag_kind='kde')
其中,第一句是定義我們想要參與繪制聯(lián)合分布圖的列,將需要繪圖的列標(biāo)題放入joint_column??梢钥吹?,因?yàn)槲业臄?shù)據(jù)中,具有ID這種編號(hào)列,而肯定編號(hào)是不需要參與繪圖的,那么我們就不將其放入joint_column即可。
第二句就是繪圖。kind表示聯(lián)合分布圖中非對(duì)角線圖的類(lèi)型,可選'reg'與'scatter'、'kde'、'hist','reg'代表在圖片中加入一條擬合直線,'scatter'就是不加入這條直線,'kde'是等高線的形式,'hist'就是類(lèi)似于柵格地圖的形式;diag_kind表示聯(lián)合分布圖中對(duì)角線圖的類(lèi)型,可選'hist'與'kde','hist'代表直方圖,'kde'代表直方圖曲線化。
以kind和diag_kind分別選擇'reg'和'kde'為例,繪圖結(jié)果如下:

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

個(gè)人感覺(jué)第一幅圖好看些~
不過(guò),由于參與繪圖的變量個(gè)數(shù)比較多,因此使得圖中的字體有點(diǎn)看不清??梢约由弦痪浯a在sns.pairplot這句代碼的上面:
sns.set(font_scale=1.2)
其中,font_scale就是字體的大小,后面的數(shù)字越大,字體就越大。以font_scale=1.2為例,讓我們看看效果:

這樣子字體就大了~
到此這篇關(guān)于Python+seaborn實(shí)現(xiàn)聯(lián)合分布圖的繪制的文章就介紹到這了,更多相關(guān)Python seaborn聯(lián)合分布圖內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
在Pandas?DataFrame中插入一列的方法實(shí)例
在敲代碼的過(guò)程中,老是會(huì)遇到在Dataframe中新添加一列的情況,所以下面這篇文章主要給大家介紹了關(guān)于如何在Pandas?DataFrame中插入一列的方法實(shí)的相關(guān)資料,需要的朋友可以參考下2022-03-03
Python Tkinter簡(jiǎn)單布局實(shí)例教程
這篇文章主要介紹了Python Tkinter簡(jiǎn)單布局實(shí)例教程,包括了填充、左右布局、絕對(duì)布局、網(wǎng)格布局等,需要的朋友可以參考下2014-09-09
python包裝和授權(quán)學(xué)習(xí)教程
包裝是指對(duì)一個(gè)已經(jīng)存在的對(duì)象進(jìn)行系定義加工,實(shí)現(xiàn)授權(quán)是包裝的一個(gè)特性,下面這篇文章主要給大家介紹了關(guān)于python包裝和授權(quán)的相關(guān)資料,文中通過(guò)實(shí)例代碼介紹的非常詳細(xì),需要的朋友可以參考下2023-06-06
Python如何實(shí)現(xiàn)遠(yuǎn)程方法調(diào)用
這篇文章主要介紹了Python如何實(shí)現(xiàn)遠(yuǎn)程方法調(diào)用,文中講解非常細(xì)致,幫助大家更好的理解和學(xué)習(xí),感興趣的朋友可以了解下2020-08-08
對(duì)python pandas讀取剪貼板內(nèi)容的方法詳解
今天小編就為大家分享一篇對(duì)python pandas讀取剪貼板內(nèi)容的方法詳解,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過(guò)來(lái)看看吧2019-01-01
Python安裝第三方庫(kù)攻略(pip和Anaconda)
這篇文章主要介紹了Python安裝第三方庫(kù)攻略(pip和Anaconda),文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧2020-10-10

