Python?pytorch實(shí)現(xiàn)繪制一維熱力圖
熱力圖
熱力圖(Heat Map)是指用 X 軸 和 Y 軸 表示的兩個(gè)分類字段確定數(shù)值點(diǎn)的位置,通過相應(yīng)位置的矩形顏色去表現(xiàn)數(shù)值的大小,顏色深代表的數(shù)值大。
熱力圖是非常特殊的一種圖,可以顯示不可點(diǎn)擊區(qū)域發(fā)生的事情。熱力圖非常關(guān)注分布,可以不需要坐標(biāo)軸,其背景通常是圖片或者地圖,一般使用彩虹色系做展示。
熱力圖一般以二維居多,多用于圖像處理領(lǐng)域。
熱力圖主要用于展示連續(xù)型數(shù)據(jù)的分布情況。例如用顏色展現(xiàn)某一范圍內(nèi)不同地區(qū)數(shù)據(jù)量的差異,網(wǎng)站分析等等。
優(yōu)勢(shì):好看、易于理解,數(shù)據(jù)信息更直觀有效,可以清晰地呈現(xiàn)數(shù)據(jù)在地理空間的分布、頻率或密度情況。
缺點(diǎn):效果過于柔化,不適合用作數(shù)據(jù)的精確表達(dá),且不適合比較單一變量的大小。
一維熱力圖-----總體分布情況
根據(jù)折線圖中的數(shù)據(jù)創(chuàng)建一維熱圖,類似于直方圖,根據(jù)每個(gè) bins 的出現(xiàn)頻率繪制不同顏色
代碼
可以通過imshow關(guān)鍵字參數(shù)設(shè)置imshow設(shè)置圖像的數(shù)據(jù)范圍。 這用元組(left, right, bottom, top)設(shè)置范圍。
在范圍內(nèi)使用直方圖的最小和最大bin邊緣可將數(shù)據(jù)移動(dòng)到其原始值
import matplotlib.pyplot as plt import numpy as np; np.random.seed(1) # 畫布大小 plt.rcParams["figure.figsize"] = 5,2 # 順序生成 -56 到 40 之間的96個(gè)數(shù) pos = np.arange(-56,40) #there are 96 numbers from -56 to 39 print len(pos), pos.min(), pos.max() # 生成 96 個(gè)隨機(jī)數(shù) p = np.random.rand(len(pos)) # 隨機(jī)數(shù)轉(zhuǎn)化成概率 p= p/np.sum(p) # 根據(jù)每個(gè)數(shù)出現(xiàn)的概率,在 pos 中挑選 4000 個(gè)數(shù) a= np.random.choice(pos, size=4000, p=p) # 將 a 的取值范圍劃分為 96 個(gè) bin bins=np.arange(-56,41) # 得到直方分布,hist 表示每個(gè) bin 中數(shù)的個(gè)數(shù) ,edges 表示 bin 的邊界 hist, edges = np.histogram(a, bins) hist=hist[np.newaxis,:] # 熱力圖 x軸 和 y軸范圍 extent=[bins.min(), bins.max(),0,1] #畫圖 plt.imshow(hist, aspect ="auto", cmap="viridis", extent=extent) plt.gca().set_yticks([]) plt.show()
一維熱力圖----數(shù)據(jù)變化情況
根據(jù)數(shù)據(jù)本身的波動(dòng)情況,根據(jù)數(shù)值本身大小變換顏色
例圖,可以看到數(shù)值大時(shí),熱力圖更紅,數(shù)值小時(shí),熱力圖更藍(lán)
代碼
import matplotlib.pyplot as plt import numpy as np; np.random.seed(1) # 畫布大小 plt.rcParams["figure.figsize"] = 5,4 # 生成 40 個(gè) sin 函數(shù)值 x = np.sin(range(40)) # 每x個(gè)數(shù)計(jì)算平均值,即一段內(nèi)的分布(此處取為1,即為每個(gè)數(shù)繪制分布) a = x.reshape(1,-1) a = np.mean(a, axis=0) a=a[np.newaxis,:] # 繪制熱力圖 figure = plt.figure() axes = figure.add_subplot(211) axes.matshow(a,aspect ="auto",cmap="Spectral_r", interpolation='bilinear') # 不顯示橫縱坐標(biāo) plt.xticks([]) plt.yticks([]) # 繪制原始數(shù)據(jù)圖 plt.subplot(212) plt.plot(range(len(x)),x) # x軸顯示范圍從第一個(gè)數(shù)到最后一個(gè) plt.xlim((0,len(x)-1)) plt.show()
attention 熱力圖繪制原理
難點(diǎn)在于數(shù)據(jù)獲取,獲取最后一層梯度數(shù)據(jù),即可知道注意力重點(diǎn),根據(jù)梯度數(shù)據(jù) resize 到原始數(shù)據(jù),再畫出熱力圖(根據(jù)數(shù)據(jù)變化情況),之后與原始數(shù)據(jù)對(duì)應(yīng),即可得到網(wǎng)絡(luò)的高響應(yīng)熱力圖
到此這篇關(guān)于Python pytorch實(shí)現(xiàn)繪制一維熱力圖的文章就介紹到這了,更多相關(guān)Python繪制一維熱力圖內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
python連接sql?server數(shù)據(jù)庫(kù)的方法實(shí)戰(zhàn)
當(dāng)我們用Python來編寫網(wǎng)站,必須要能夠通過python操作數(shù)據(jù)庫(kù),下面這篇文章主要給大家介紹了關(guān)于python連接sql?server數(shù)據(jù)庫(kù)的相關(guān)資料,文中通過圖文介紹的非常詳細(xì),需要的朋友可以參考下2022-08-08Python 中如何使用 virtualenv 管理虛擬環(huán)境
這篇文章主要介紹了Python 中使用 virtualenv 管理虛擬環(huán)境的方法,幫助大家更好的理解和使用python,感興趣的朋友可以了解下2021-01-01Python使用ThreadPoolExecutor一次開啟多個(gè)線程
通過使用ThreadPoolExecutor,您可以同時(shí)開啟多個(gè)線程,從而提高程序的并發(fā)性能,本文就來介紹一下Python使用ThreadPoolExecutor一次開啟多個(gè)線程,感興趣的可以了解一下2023-11-11django注冊(cè)用郵箱發(fā)送驗(yàn)證碼的實(shí)現(xiàn)
這篇文章主要介紹了django注冊(cè)用郵箱發(fā)送驗(yàn)證碼的實(shí)現(xiàn),文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧2021-04-04python的import?機(jī)制是怎么實(shí)現(xiàn)的
這篇文章主要介紹了python的import?機(jī)制是怎么實(shí)現(xiàn)的,import有Python運(yùn)行時(shí)的全局模塊池的維護(hù)和搜索、解析與搜索模塊路徑的樹狀結(jié)構(gòu)等作用,下文具體相關(guān)介紹需要的小伙伴可以參考一下2022-05-05python帶參數(shù)打包exe及調(diào)用方式
今天小編就為大家分享一篇python帶參數(shù)打包exe及調(diào)用方式,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過來看看吧2019-12-12Django路由匹配調(diào)試與排錯(cuò)指南分享
這篇文章主要介紹了Django路由匹配調(diào)試與排錯(cuò)指南,具有很好的參考價(jià)值,希望對(duì)大家有所幫助,如有錯(cuò)誤或未考慮完全的地方,望不吝賜教2025-05-05