seaborn繪制雙變量聯(lián)合分布圖示例詳解
繪制雙變量聯(lián)合分布圖
有時(shí)我們不僅需要查看單個(gè)變量的分 布,同時(shí)也需要查看變量之間的聯(lián)系, 往往還需要進(jìn)行預(yù)測(cè)等。這時(shí)就需要用到雙變量聯(lián)合分布了。
下面我們一起來(lái)看一下連續(xù)數(shù)值型數(shù)據(jù)雙變量之間的可視化方法。
在Seaborn中繪制連續(xù)數(shù)值型雙變量我們使用sns.jointplot():
說(shuō)明文檔:https://seaborn.pydata.org/generated/seaborn.jointplot.html
seaborn.jointplot(x, y, data=None, kind='scatter')
- x、y:分別記錄x軸和y軸的數(shù)據(jù)名稱。
- data:數(shù)據(jù)集,data的數(shù)據(jù)類型為DataFrame。
- kind:用于設(shè)置圖像的類型,可選的類型有: 'scatter' | 'reg' | 'resid' | 'kde' | 'hex',分別表示散點(diǎn)圖、回歸圖、殘差圖、 核密度圖和蜂巢圖。
散點(diǎn)圖
如果我們希望看一看數(shù)據(jù)中兩個(gè)變量在二維平面上之間的關(guān)系時(shí), 則可以使用散點(diǎn)圖,因?yàn)樯Ⅻc(diǎn)圖可以幫助我們很容易地發(fā)現(xiàn)一些數(shù)據(jù)的分布規(guī)律。
import numpy as np
import seaborn as sns
import pandas as pd
import matplotlib.pyplot as plt
df =pd.DataFrame({'x':np.random.normal(size=500),
'y':np.random.normal(size=500)})
sns.jointplot(x='x',y='y',data=df,kind='reg')
plt.show()
雙變量散點(diǎn)圖:

- 根據(jù)結(jié)果我們發(fā)現(xiàn), sns.jointplot()函數(shù)可以顯示兩個(gè)變量之間的聯(lián)合關(guān)系以及每個(gè)單變量的分布。
- 我們把函數(shù)中的 kind 參數(shù)設(shè)置為'reg' 就可以做一些簡(jiǎn)單的線性模型擬合。
- 并且在坐標(biāo)系的上方和右側(cè)分別繪制了兩個(gè)變量的直方圖和核密度圖。
蜂巢圖
上面我們根據(jù)數(shù)據(jù)繪制了聯(lián)合散點(diǎn)圖,但是你會(huì)發(fā) 現(xiàn)兩個(gè)數(shù)據(jù)并沒(méi)有明確的線性關(guān)系,并且散點(diǎn)圖有 一個(gè)問(wèn)題,就是相同的點(diǎn)會(huì)覆蓋在一起,導(dǎo)致我們 看不出來(lái)濃密和稀疏。 所以我們可以使用蜂巢圖查看一下數(shù)據(jù)的分布情況。
蜂巢圖的繪制還是使用seaborn.jointplot()函 數(shù),只是將kind參數(shù)更該為hex即可。
import numpy as np
import seaborn as sns
import pandas as pd
import matplotlib.pyplot as plt
df =pd.DataFrame({'x':np.random.normal(size=500),
'y':np.random.normal(size=500)})
sns.jointplot(x='x',y='y',data=df,kind='hex')
plt.show()

蜂巢圖中每個(gè)六邊形表示一個(gè)范圍, 用顏色表示這個(gè)范圍內(nèi)的數(shù)據(jù)量,顏 色越白的地方數(shù)據(jù)量越小,顏色越深 的地方表示數(shù)據(jù)量越大。 當(dāng)數(shù)據(jù)比較大的時(shí)候該種方式,更容易找出數(shù)據(jù)的分布情況。
密度圖
在單變量分析的時(shí)候,我們繪制了單變量的概率密度曲線, 在雙變量中我們也可以使用密度圖來(lái)分析數(shù)據(jù)的分布情況。 密度圖的繪制還是使用seaborn.jointplot()函數(shù),只是將 kind參數(shù)更該為kde即可。
import numpy as np
import seaborn as sns
import pandas as pd
import matplotlib.pyplot as plt
df =pd.DataFrame({'x':np.random.normal(size=500),
'y':np.random.normal(size=500)})
sns.jointplot(x='x',y='y',data=df,kind='kde')
plt.show()

根據(jù)圖形可以看出,雙變量密度圖是使用一些封閉 但是不規(guī)則的曲線來(lái)表示, 數(shù)據(jù)密度越高的地方顏色越深,數(shù)據(jù)密度越低的地方顏色越淺。
g = sns.jointplot(data=x_data, x=x, y=y) g.plot_joint(sns.kdeplot, color="r", zorder=0, levels=6) g.plot_marginals(sns.rugplot, color="r", height=-.15, clip_on=False)

sns.jointplot(
data=x_data, x=x, y=y,
marker="+", s=100, marginal_kws=dict(bins=25, fill=False),
)

以上就是seaborn繪制雙變量聯(lián)合分布圖示例詳解的詳細(xì)內(nèi)容,更多關(guān)于seaborn繪制雙變量聯(lián)合分布圖的資料請(qǐng)關(guān)注腳本之家其它相關(guān)文章!
相關(guān)文章
Python 處理數(shù)據(jù)的實(shí)例詳解
這篇文章主要介紹了Python 處理數(shù)據(jù)的實(shí)例詳解的相關(guān)資料,這里主要介紹Python 常用的基礎(chǔ)知識(shí)并附實(shí)例,需要的朋友可以參考下2017-08-08
Python Threading 線程/互斥鎖/死鎖/GIL鎖
這篇文章主要介紹了Python Threading 線程/互斥鎖/死鎖/GIL鎖的相關(guān)知識(shí),本文給大家介紹的非常詳細(xì),具有一定的參考借鑒價(jià)值,需要的朋友可以參考下2019-07-07
Python+Selenium+Webdriver實(shí)現(xiàn)自動(dòng)執(zhí)行微軟獎(jiǎng)勵(lì)積分腳本
這篇文章主要為大家詳細(xì)介紹了如何利用Python+Selenium+Webdriver實(shí)現(xiàn)自動(dòng)執(zhí)行微軟獎(jiǎng)勵(lì)積分腳本,文中的示例代碼講解詳細(xì),感興趣的小伙伴可以了解一下2023-02-02
Python使用ConfigParser模塊操作配置文件的方法
這篇文章主要介紹了Python使用ConfigParser模塊操作配置文件的方法,結(jié)合實(shí)例形式分析了Python基于ConfigParser模塊針對(duì)配置文件的創(chuàng)建、讀取、寫(xiě)入、判斷等相關(guān)操作技巧,需要的朋友可以參考下2018-06-06
python動(dòng)態(tài)網(wǎng)站爬蟲(chóng)實(shí)戰(zhàn)(requests+xpath+demjson+redis)
本文主要介紹了python動(dòng)態(tài)網(wǎng)站爬蟲(chóng)實(shí)戰(zhàn)(requests+xpath+demjson+redis),文中通過(guò)示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2021-09-09
教你用python實(shí)現(xiàn)12306余票查詢
今天就和大家一起來(lái)討論一下python實(shí)現(xiàn)12306余票查詢(pycharm+python3.7),一起來(lái)感受一下python爬蟲(chóng)的簡(jiǎn)單實(shí)踐,需要的朋友可以參考下2021-06-06

