最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

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

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

1.引言

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

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

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

2. 栗子

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

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

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

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

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

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

解下來我們分析每種谷物13種不同成分之間的相關(guān)性,我們可以采用Pandas庫中的coor()函數(shù)來計算相關(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)性不大的最后幾個成分,代碼如下:

# 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)性矩陣是對稱矩陣,矩陣中上三角和下三角的值是相同的,這帶來了很大的重復(fù)。

4. 畫熱力圖

非常幸運的是我們可以使用Mask矩陣來生成Seaborn中的熱力圖,那么我們首先來生成Mask矩陣。

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

結(jié)果如下:

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

如下所示:

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

結(jié)果如下:

接下來我們畫熱力圖,如下所示:

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

此時的運行結(jié)果如下:

5. 添加數(shù)值

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

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

代碼如下:

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

同時我們可以設(shè)置heatmap相應(yīng)的參數(shù),讓其顯示對應(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()

運行結(jié)果如下:

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

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

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

這個函數(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)站來選擇我們接下來設(shè)置的調(diào)色板的顏色。

最后但是最最重要的一點,不要忘了在我們的圖像上設(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()

運行結(jié)果如下:

是不是看上去高大上了很多。人類果然還是視覺動物。

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

相關(guān)文章

  • 基于Python編寫簡易版的天天跑酷游戲的示例代碼

    基于Python編寫簡易版的天天跑酷游戲的示例代碼

    這篇文章主要介紹了如何利用Python編寫一個簡易版的天天跑酷游戲,文中的示例代碼講解詳細,對我們學(xué)習(xí)Python有一定幫助,需要的可以參考一下
    2022-03-03
  • Python中的簡寫操作(for、if簡寫、匿名函數(shù))

    Python中的簡寫操作(for、if簡寫、匿名函數(shù))

    這篇文章主要介紹了Python中的簡寫操作(for、if簡寫、匿名函數(shù)),具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教
    2022-07-07
  • python爬蟲自動創(chuàng)建文件夾的功能

    python爬蟲自動創(chuàng)建文件夾的功能

    這篇文章主要介紹了python爬蟲自動創(chuàng)建文件夾的功能,非常不錯,具有一定的參考借鑒價值,需要的朋友參考下吧
    2018-08-08
  • Python使用urllib2模塊實現(xiàn)斷點續(xù)傳下載的方法

    Python使用urllib2模塊實現(xiàn)斷點續(xù)傳下載的方法

    這篇文章主要介紹了Python使用urllib2模塊實現(xiàn)斷點續(xù)傳下載的方法,實例分析了urllib2模塊的使用及斷點續(xù)傳下載的實現(xiàn)技巧,需要的朋友可以參考下
    2015-06-06
  • Tensorflow與RNN、雙向LSTM等的踩坑記錄及解決

    Tensorflow與RNN、雙向LSTM等的踩坑記錄及解決

    這篇文章主要介紹了Tensorflow與RNN、雙向LSTM等的踩坑記錄及解決方案,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教
    2021-05-05
  • python查看數(shù)據(jù)類型的方法

    python查看數(shù)據(jù)類型的方法

    在本篇文章里小編給大家整理了關(guān)于python怎么查看數(shù)據(jù)類型的相關(guān)知識點,有需要的朋友們學(xué)習(xí)下。
    2019-10-10
  • python利用ddddocr包ocr識別圖片碼的實現(xiàn)

    python利用ddddocr包ocr識別圖片碼的實現(xiàn)

    ddddocr是一個輕量級的OCR庫,用于識別圖片中的文字和驗證碼,本文主要介紹了python利用ddddocr包ocr識別圖片碼的實現(xiàn),具有一定的參考價值,感興趣的可以了解一下
    2025-01-01
  • PyTorch中的nn.ConvTranspose2d模塊詳解

    PyTorch中的nn.ConvTranspose2d模塊詳解

    nn.ConvTranspose2d是PyTorch中用于實現(xiàn)二維轉(zhuǎn)置卷積的模塊,廣泛應(yīng)用于生成對抗網(wǎng)絡(luò)(GANs)和卷積神經(jīng)網(wǎng)絡(luò)(CNNs)的解碼器中。該模塊通過參數(shù)如輸入輸出通道數(shù)、卷積核大小、步長、填充等,能控制輸出尺寸和避免棋盤效應(yīng)
    2024-09-09
  • Python PyWebIO實現(xiàn)網(wǎng)頁版數(shù)據(jù)查詢器

    Python PyWebIO實現(xiàn)網(wǎng)頁版數(shù)據(jù)查詢器

    PyWebIO提供了一系列命令式的交互函數(shù)來在瀏覽器上獲取用戶輸入和進行輸出,將瀏覽器變成了一個“富文本終端”,可以用于構(gòu)建簡單的Web應(yīng)用或基于瀏覽器的GUI應(yīng)用。本文將利用PyWebIO制作一個網(wǎng)頁版的數(shù)據(jù)查詢器,感興趣的可以學(xué)習(xí)一下
    2021-12-12
  • pandas 數(shù)據(jù)結(jié)構(gòu)之Series的使用方法

    pandas 數(shù)據(jù)結(jié)構(gòu)之Series的使用方法

    這篇文章主要介紹了pandas 數(shù)據(jù)結(jié)構(gòu)之Series的使用方法,文中通過示例代碼介紹的非常詳細,對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2019-06-06

最新評論

云安县| 准格尔旗| 繁昌县| 东城区| 聂荣县| 五河县| 正阳县| 东山县| 玛沁县| 内丘县| 桂平市| 彭州市| 襄垣县| 乌兰察布市| 丹江口市| 来宾市| 钟祥市| 如皋市| 日土县| 栾城县| 安阳市| 杭锦旗| 吉安县| 枝江市| 彰化县| 南丰县| 贵港市| 名山县| 斗六市| 景洪市| 师宗县| 邵东县| 敦煌市| 会同县| 商洛市| 南充市| 丰顺县| 泸州市| 奉化市| 赞皇县| 南溪县|