首頁人工智能技術資訊正文

Seaborn中怎樣繪制雙變量分布圖?

更新時間:2023-03-06 來源:黑馬程序員 瀏覽量:

兩個變量的二元分布可視化也很有用。在 Seaborn中最簡單的方法是使用 jointplot()函數(shù),該函數(shù)可以創(chuàng)建一個多面板圖形,比如散點圖、二維直方圖、核密度估計等,以顯示兩個變量之間的雙變量關系及每個變量在單坐標軸上的單變量分布。

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:用于計算有關關系的統(tǒng)計量并標注圖。

(3) color:表示繪圖元素的顏色。

(4) size:用于設置圖的大小(正方形)。

(5) ratio:表示中心圖與側邊圖的比例。該參數(shù)的值越大,則中心圖的占比會越大。

(6) space:用于設置中心圖與側邊圖的間隔大小。

下面以散點圖、二維直方圖、核密度估計曲線為例,為大家介紹如何使用 Seaborn繪制這些圖形。

1.繪制散點圖

調(diào)用 seaborn.jointplot()函數(shù)繪制散點圖的示例如下。

import numpy as np
import pandas as pd
import結果如下圖所示。 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)建了一個 DataFrame對象 dataframe_obj作為散點圖的數(shù)據(jù),其中x軸和y軸的數(shù)據(jù)均為500個隨機數(shù),接著調(diào)用 jointplot0函數(shù)繪制一個散點圖,散點圖x軸的名稱為“x”,y軸的名稱為“y”。

運行結果如圖所示。

1678074910574_72.png

2.繪制二維直方圖

二維直方圖類似于“六邊形”圖,主要是因為它顯示了落在六角形區(qū)域內(nèi)的觀察值的計數(shù),適用于較大的數(shù)據(jù)集。當調(diào)用 jointplot()函數(shù)時,只

要傳入kind="hex",就可以繪制二維直方圖,具體示例代碼如下。

# 繪制二維直方圖 
sns.jointplot(x="x", y="y", data=dataframe_obj, kind="hex")

運行結果如圖所示。

1678075126511_73.png

從六邊形顏色的深淺,可以觀察到數(shù)據(jù)密集的程度,另外,圖形的上方和右側仍然給出了直方圖。注意,在繪制二維直方圖時,最好使用白色

背景。

3.繪制核密度估計圖形

利用核密度估計同樣可以查看二元分布,其用等高線圖來表示。當調(diào)用jointplot()函數(shù)時只要傳入ind="kde",就可以繪制核密度估計圖形,具體示例代碼如下。

sns.jointplot(x="x", y="y", data=dataframe_obj, kind="kde")

上述示例中,繪制了核密度的等高線圖,另外,在圖形的上方和右側給出了核密度曲線圖。運行結果如圖所示。

1678080896899_圖片1.png

通過觀等高線的顏色深淺,可以看出哪個范圍的數(shù)值分布的最多,哪個范圍的數(shù)值分布的最少。

4.繪制成對的雙變量分布

要想在數(shù)據(jù)集中繪制多個成對的雙變量分布,則可以使用pairplot()函數(shù)實現(xiàn),該函數(shù)會創(chuàng)建一個坐標軸矩陣,并且顯示Datafram對象中每對變量的關系。另外,pairplot()函數(shù)也可以繪制每個變量在對角軸上的單變量分布。

接下來,通過sns.pairplot()函數(shù)繪制數(shù)據(jù)集變量間關系的圖形,示例代碼如下:

#加載seaborn中的數(shù)據(jù)集
dataset=sns.load_dataset("iris")

dataset.head()

1678081126812_圖片2.png

上述示例中,通過load_dataset0函數(shù)加載了seaborn中內(nèi)置的數(shù)據(jù)集,根據(jù)iris數(shù)據(jù)集繪制多個雙變量分布。

#繪制多個成對的雙變量分布
sns.pairplot(dataset)

結果如下圖所示。

1678081254524_圖片3.png

分享到:
在線咨詢 我要報名
和我們在線交談!