更新時(shí)間:2023-03-06 來源:黑馬程序員 瀏覽量:
兩個(gè)變量的二元分布可視化也很有用。在 Seaborn中最簡單的方法是使用 jointplot()函數(shù),該函數(shù)可以創(chuàng)建一個(gè)多面板圖形,比如散點(diǎn)圖、二維直方圖、核密度估計(jì)等,以顯示兩個(gè)變量之間的雙變量關(guān)系及每個(gè)變量在單坐標(biāo)軸上的單變量分布。
jointplot()函數(shù)的語法格式如下。
seaborn.jointplot(x, y, data=None, kind='scatter', stat_func=None, color=None, ratio=5, space=0.2, dropna=True)
上述函數(shù)中常用參數(shù)的含義如下:
(1) kind:表示繪制圖形的類型。
(2) stat_func:用于計(jì)算有關(guān)關(guān)系的統(tǒng)計(jì)量并標(biāo)注圖。
(3) color:表示繪圖元素的顏色。
(4) size:用于設(shè)置圖的大小(正方形)。
(5) ratio:表示中心圖與側(cè)邊圖的比例。該參數(shù)的值越大,則中心圖的占比會(huì)越大。
(6) space:用于設(shè)置中心圖與側(cè)邊圖的間隔大小。
下面以散點(diǎn)圖、二維直方圖、核密度估計(jì)曲線為例,為大家介紹如何使用 Seaborn繪制這些圖形。
調(diào)用 seaborn.jointplot()函數(shù)繪制散點(diǎn)圖的示例如下。
import numpy as np import pandas as pd import結(jié)果如下圖所示。 seaborn as sns # 創(chuàng)建DataFrame對象 dataframe_obj = pd.DataFrame({"x": np.random.randn(500),"y": np.random.randn(500)}) # 繪制散布圖 sns.jointplot(x="x", y="y", data=dataframe_obj)
上述示例中,首先創(chuàng)建了一個(gè) DataFrame對象 dataframe_obj作為散點(diǎn)圖的數(shù)據(jù),其中x軸和y軸的數(shù)據(jù)均為500個(gè)隨機(jī)數(shù),接著調(diào)用 jointplot0函數(shù)繪制一個(gè)散點(diǎn)圖,散點(diǎn)圖x軸的名稱為“x”,y軸的名稱為“y”。
運(yùn)行結(jié)果如圖所示。
二維直方圖類似于“六邊形”圖,主要是因?yàn)樗@示了落在六角形區(qū)域內(nèi)的觀察值的計(jì)數(shù),適用于較大的數(shù)據(jù)集。當(dāng)調(diào)用 jointplot()函數(shù)時(shí),只
要傳入kind="hex",就可以繪制二維直方圖,具體示例代碼如下。
# 繪制二維直方圖 sns.jointplot(x="x", y="y", data=dataframe_obj, kind="hex")
運(yùn)行結(jié)果如圖所示。
從六邊形顏色的深淺,可以觀察到數(shù)據(jù)密集的程度,另外,圖形的上方和右側(cè)仍然給出了直方圖。注意,在繪制二維直方圖時(shí),最好使用白色
背景。
利用核密度估計(jì)同樣可以查看二元分布,其用等高線圖來表示。當(dāng)調(diào)用jointplot()函數(shù)時(shí)只要傳入ind="kde",就可以繪制核密度估計(jì)圖形,具體示例代碼如下。
sns.jointplot(x="x", y="y", data=dataframe_obj, kind="kde")
上述示例中,繪制了核密度的等高線圖,另外,在圖形的上方和右側(cè)給出了核密度曲線圖。運(yùn)行結(jié)果如圖所示。
通過觀等高線的顏色深淺,可以看出哪個(gè)范圍的數(shù)值分布的最多,哪個(gè)范圍的數(shù)值分布的最少。
要想在數(shù)據(jù)集中繪制多個(gè)成對的雙變量分布,則可以使用pairplot()函數(shù)實(shí)現(xiàn),該函數(shù)會(huì)創(chuàng)建一個(gè)坐標(biāo)軸矩陣,并且顯示Datafram對象中每對變量的關(guān)系。另外,pairplot()函數(shù)也可以繪制每個(gè)變量在對角軸上的單變量分布。
接下來,通過sns.pairplot()函數(shù)繪制數(shù)據(jù)集變量間關(guān)系的圖形,示例代碼如下:
#加載seaborn中的數(shù)據(jù)集 dataset=sns.load_dataset("iris") dataset.head()
上述示例中,通過load_dataset0函數(shù)加載了seaborn中內(nèi)置的數(shù)據(jù)集,根據(jù)iris數(shù)據(jù)集繪制多個(gè)雙變量分布。
#繪制多個(gè)成對的雙變量分布 sns.pairplot(dataset)
結(jié)果如下圖所示。