欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

python數(shù)據(jù)可視化Seaborn畫(huà)熱力圖

 更新時(shí)間:2022年01月25日 14:31:29   作者:趙卓不凡  
這篇文章主要介紹了數(shù)據(jù)可視化Seaborn畫(huà)熱力圖,熱力圖的想法其實(shí)很簡(jiǎn)單,用顏色替換數(shù)字,下面我們來(lái)看看文章對(duì)操作過(guò)程的具體介紹吧,需要的小伙伴可以參考一下具體內(nèi)容,希望對(duì)你有所幫助

1.引言

熱力圖的想法很簡(jiǎn)單,用顏色替換數(shù)字。

現(xiàn)在,這種可視化風(fēng)格已經(jīng)從最初的顏色編碼表格走了很長(zhǎng)一段路。熱力圖被廣泛用于地理空間數(shù)據(jù)。這種圖通常用于描述變量的密度或強(qiáng)度,模式可視化、方差甚至異??梢暬?。

鑒于熱力圖有如此多的應(yīng)用,本文將介紹如何使用Seaborn 來(lái)創(chuàng)建熱力圖。

2. 栗子

首先我們導(dǎo)入PandasNumpy庫(kù),這兩個(gè)庫(kù)可以幫助我們進(jìn)行數(shù)據(jù)預(yù)處理。

import pandas as pd
import matplotlib.pyplot as plt
import seaborn as sb
import numpy as np

為了舉例,我們采用的數(shù)據(jù)集是 80 種不同谷物的樣本,我們來(lái)看看它們的成分。

數(shù)據(jù)集樣例如下所示:

上圖中,第一行為表頭,接著對(duì)于每一行來(lái)說(shuō),第一列為谷物的名稱,后面第4列到16列為每種谷物含有的13種主要組成成分的數(shù)值。

3. 數(shù)據(jù)預(yù)處理

解下來(lái)我們分析每種谷物13種不同成分之間的相關(guān)性,我們可以采用Pandas庫(kù)中的coor()函數(shù)來(lái)計(jì)算相關(guān)性,

代碼如下:

# read dataset
df = pd.read_csv('data/cereal.csv')
# get correlations
df_corr = df.corr() ?# 13X13
print(df_corr)

得到結(jié)果如下:

          calories   protein       fat  ...    weight      cups    rating
calories  1.000000  0.019066  0.498610  ...  0.696091  0.087200 -0.689376
protein   0.019066  1.000000  0.208431  ...  0.216158 -0.244469  0.470618
fat       0.498610  0.208431  1.000000  ...  0.214625 -0.175892 -0.409284
sodium    0.300649 -0.054674 -0.005407  ...  0.308576  0.119665 -0.401295
fiber    -0.293413  0.500330  0.016719  ...  0.247226 -0.513061  0.584160
carbo     0.250681 -0.130864 -0.318043  ...  0.135136  0.363932  0.052055
sugars    0.562340 -0.329142  0.270819  ...  0.450648 -0.032358 -0.759675
potass   -0.066609  0.549407  0.193279  ...  0.416303 -0.495195  0.380165
vitamins  0.265356  0.007335 -0.031156  ...  0.320324  0.128405 -0.240544
shelf     0.097234  0.133865  0.263691  ...  0.190762 -0.335269  0.025159
weight    0.696091  0.216158  0.214625  ...  1.000000 -0.199583 -0.298124
cups      0.087200 -0.244469 -0.175892  ... -0.199583  1.000000 -0.203160
rating   -0.689376  0.470618 -0.409284  ... -0.298124 -0.203160  1.000000

[13 rows x 13 columns]

接著我們移除相關(guān)性不大的最后幾個(gè)成分,代碼如下:

# irrelevant fields
fields = ['rating', 'shelf', 'cups', 'weight']
# drop rows
df_corr.drop(fields, inplace=True) # 9X13
# drop cols
df_corr.drop(fields, axis=1, inplace=True) # 9X9
print(df_corr)

得到結(jié)果如下:

我們知道相關(guān)性矩陣是對(duì)稱矩陣,矩陣中上三角和下三角的值是相同的,這帶來(lái)了很大的重復(fù)。

4. 畫(huà)熱力圖

非常幸運(yùn)的是我們可以使用Mask矩陣來(lái)生成Seaborn中的熱力圖,那么我們首先來(lái)生成Mask矩陣。

np.ones_like(df_corr, dtype=np.bool)

結(jié)果如下:

接著我們來(lái)得到上三角矩陣,在Numpy中使用np.triu函數(shù)可以返回上三角矩陣對(duì)應(yīng)的Mask,

如下所示:

mask = np.triu(np.ones_like(df_corr, dtype=np.bool))

結(jié)果如下:

接下來(lái)我們畫(huà)熱力圖,如下所示:

sb.heatmap(df_corr,mask=mask)
plt.show()

此時(shí)的運(yùn)行結(jié)果如下:

5. 添加數(shù)值

觀察上圖,我們雖然使用Mask生成了熱力圖,但是圖像中還有兩個(gè)空的單元格(紅色圓圈所示)。

我們當(dāng)然可以在繪制的時(shí)候?qū)⑵溥M(jìn)行過(guò)濾。即分別將和上述圓圈對(duì)應(yīng)的maskdf_corr過(guò)濾掉,

代碼如下:

# adjust mask and df
mask = mask[1:, :-1]
corr = df_corr.iloc[1:, :-1].copy()

同時(shí)我們可以設(shè)置heatmap相應(yīng)的參數(shù),讓其顯示對(duì)應(yīng)的數(shù)值,

完整代碼如下:

def test2():
? ? # read dataset
? ? df = pd.read_csv('data/cereal.csv')
? ? # get correlations
? ? df_corr = df.corr() ?# 13X13
? ? # irrelevant fields
? ? fields = ['rating', 'shelf', 'cups', 'weight']
? ? df_corr.drop(fields, inplace=True) ?# 9X13
? ? # drop cols
? ? df_corr.drop(fields, axis=1, inplace=True) ?# 9X9

? ? mask = np.triu(np.ones_like(df_corr, dtype=np.bool))

? ? # adjust mask and df
? ? mask = mask[1:, :-1]
? ? corr = df_corr.iloc[1:, :-1].copy()
? ? # plot heatmap
? ? sb.heatmap(corr, mask=mask, annot=True, fmt=".2f", cmap='Blues',
? ? ? ? ? ? ? ?vmin=-1, vmax=1, cbar_kws={"shrink": .8})
? ? # yticks
? ? plt.yticks(rotation=0)
? ? plt.show()

運(yùn)行結(jié)果如下:

6. 調(diào)色板優(yōu)化

接著我們繼續(xù)優(yōu)化可視化的效果,考慮到相關(guān)系數(shù)的范圍為-1到1,所以顏色變化有兩個(gè)方向?;诖?,由中間向兩側(cè)發(fā)散的調(diào)色板相比連續(xù)的調(diào)色板視覺(jué)效果會(huì)更好。如下所示為發(fā)散的調(diào)色板示例:

在Seaborn庫(kù)中存在生成發(fā)散調(diào)色板的函數(shù) driverging_palette,該函數(shù)用于構(gòu)建colormaps,每側(cè)使用一種顏色,并在中心匯聚成另一種顏色。

這個(gè)函數(shù)的完整形式如下:

diverging_palette(h_neg, h_pos, s=75, l=50, sep=1,n=6, center=“l(fā)ight”, as_cmap=False)

該函數(shù)使用顏色表示形式為HUSL,即hue,SaturationLightness。這里我們查閱網(wǎng)站來(lái)選擇我們接下來(lái)設(shè)置的調(diào)色板的顏色。

最后但是最最重要的一點(diǎn),不要忘了在我們的圖像上設(shè)置標(biāo)題,使用title函數(shù)即可。

完整代碼如下:

def test3():
? ? # read dataset
? ? df = pd.read_csv('data/cereal.csv')
? ? # get correlations
? ? df_corr = df.corr() ?# 13X13
? ? # irrelevant fields
? ? fields = ['rating', 'shelf', 'cups', 'weight']
? ? df_corr.drop(fields, inplace=True) ?# 9X13
? ? # drop cols
? ? df_corr.drop(fields, axis=1, inplace=True) ?# 9X9

? ? fig, ax = plt.subplots(figsize=(12, 10))
? ? # mask
? ? mask = np.triu(np.ones_like(df_corr, dtype=np.bool))
? ? # adjust mask and df
? ? mask = mask[1:, :-1]
? ? corr = df_corr.iloc[1:, :-1].copy()
? ? # color map
? ? cmap = sb.diverging_palette(0, 230, 90, 60, as_cmap=True)
? ? # plot heatmap
? ? sb.heatmap(corr, mask=mask, annot=True, fmt=".2f",
? ? ? ? ? ? ? ?linewidths=5, cmap=cmap, vmin=-1, vmax=1,
? ? ? ? ? ? ? ?cbar_kws={"shrink": .8}, square=True)
? ? # ticks
? ? yticks = [i.upper() for i in corr.index]
? ? xticks = [i.upper() for i in corr.columns]
? ? plt.yticks(plt.yticks()[0], labels=yticks, rotation=0)
? ? plt.xticks(plt.xticks()[0], labels=xticks)
? ? # title
? ? title = 'CORRELATION MATRIX\nSAMPLED CEREALS COMPOSITION\n'
? ? plt.title(title, loc='left', fontsize=18)
? ? plt.show()

運(yùn)行結(jié)果如下:

是不是看上去高大上了很多。人類果然還是視覺(jué)動(dòng)物。

到此這篇關(guān)于數(shù)據(jù)可視化Seaborn畫(huà)熱力圖的文章就介紹到這了,更多相關(guān)Seaborn畫(huà)熱力圖內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

  • Python?類和對(duì)象詳細(xì)介紹

    Python?類和對(duì)象詳細(xì)介紹

    這篇文章主要介紹了Python?類和對(duì)象詳細(xì)介紹,文章圍繞主題展開(kāi)詳細(xì)的內(nèi)容介紹,具有一定的參考價(jià)值,感興趣的小伙伴可以參考一下
    2022-06-06
  • python分割列表(list)的方法示例

    python分割列表(list)的方法示例

    這篇文章主要給大家介紹了python分割列表(list)的方法,文中給出了詳細(xì)的示例代碼大家參考學(xué)習(xí),對(duì)大家具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面來(lái)一起看看吧。
    2017-05-05
  • python對(duì)Excel的讀取的示例代碼

    python對(duì)Excel的讀取的示例代碼

    這篇文章主要介紹了python對(duì)Excel的讀取的示例代碼,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧
    2020-02-02
  • python 文件操作api(文件操作函數(shù))

    python 文件操作api(文件操作函數(shù))

    總是記不住API。昨晚寫的時(shí)候用到了這些,但是沒(méi)記住,于是就索性整理一下吧,方便需要的朋友
    2016-08-08
  • pandas 對(duì)group進(jìn)行聚合的例子

    pandas 對(duì)group進(jìn)行聚合的例子

    今天小編就為大家分享一篇pandas 對(duì)group進(jìn)行聚合的例子,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過(guò)來(lái)看看吧
    2019-12-12
  • Selenium中的option使用示例

    Selenium中的option使用示例

    這篇文章主要介紹了Selenium中的option用法實(shí)例,本文結(jié)合示例代碼給大家介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下
    2022-12-12
  • 使用python實(shí)現(xiàn)unix2dos和dos2unix命令的例子

    使用python實(shí)現(xiàn)unix2dos和dos2unix命令的例子

    今天小編就為大家分享一篇使用python實(shí)現(xiàn)unix2dos和dos2unix命令的例子,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過(guò)來(lái)看看吧
    2019-08-08
  • 實(shí)操Python爬取覓知網(wǎng)素材圖片示例

    實(shí)操Python爬取覓知網(wǎng)素材圖片示例

    大家好,本篇文章介紹的是實(shí)操Python爬取覓知網(wǎng)素材圖片示例,感興趣的朋友趕快來(lái)看一看吧,對(duì)你有用的話記得收藏起來(lái),方便下次瀏覽
    2021-11-11
  • 如何獲取numpy array前N個(gè)最大值

    如何獲取numpy array前N個(gè)最大值

    這篇文章主要介紹了獲取numpy array前N個(gè)最大值的操作,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2021-05-05
  • Python?計(jì)算機(jī)視覺(jué)編程進(jìn)階之OpenCV?圖像銳化及邊緣檢測(cè)

    Python?計(jì)算機(jī)視覺(jué)編程進(jìn)階之OpenCV?圖像銳化及邊緣檢測(cè)

    計(jì)算機(jī)視覺(jué)這種技術(shù)可以將靜止圖像或視頻數(shù)據(jù)轉(zhuǎn)換為一種決策或新的表示。所有這樣的轉(zhuǎn)換都是為了完成某種特定的目的而進(jìn)行的,本篇我們來(lái)學(xué)習(xí)下如何對(duì)圖像進(jìn)行銳化處理以及如何進(jìn)行邊緣檢測(cè)
    2021-11-11

最新評(píng)論