Python?pytorch實現(xiàn)繪制一維熱力圖
熱力圖
熱力圖(Heat Map)是指用 X 軸 和 Y 軸 表示的兩個分類字段確定數(shù)值點的位置,通過相應(yīng)位置的矩形顏色去表現(xiàn)數(shù)值的大小,顏色深代表的數(shù)值大。
熱力圖是非常特殊的一種圖,可以顯示不可點擊區(qū)域發(fā)生的事情。熱力圖非常關(guān)注分布,可以不需要坐標軸,其背景通常是圖片或者地圖,一般使用彩虹色系做展示。
熱力圖一般以二維居多,多用于圖像處理領(lǐng)域。
熱力圖主要用于展示連續(xù)型數(shù)據(jù)的分布情況。例如用顏色展現(xiàn)某一范圍內(nèi)不同地區(qū)數(shù)據(jù)量的差異,網(wǎng)站分析等等。
優(yōu)勢:好看、易于理解,數(shù)據(jù)信息更直觀有效,可以清晰地呈現(xiàn)數(shù)據(jù)在地理空間的分布、頻率或密度情況。
缺點:效果過于柔化,不適合用作數(shù)據(jù)的精確表達,且不適合比較單一變量的大小。
一維熱力圖-----總體分布情況
根據(jù)折線圖中的數(shù)據(jù)創(chuàng)建一維熱圖,類似于直方圖,根據(jù)每個 bins 的出現(xiàn)頻率繪制不同顏色
代碼
可以通過imshow關(guān)鍵字參數(shù)設(shè)置imshow設(shè)置圖像的數(shù)據(jù)范圍。 這用元組(left, right, bottom, top)設(shè)置范圍。
在范圍內(nèi)使用直方圖的最小和最大bin邊緣可將數(shù)據(jù)移動到其原始值
import matplotlib.pyplot as plt import numpy as np; np.random.seed(1) # 畫布大小 plt.rcParams["figure.figsize"] = 5,2 # 順序生成 -56 到 40 之間的96個數(shù) pos = np.arange(-56,40) #there are 96 numbers from -56 to 39 print len(pos), pos.min(), pos.max() # 生成 96 個隨機數(shù) p = np.random.rand(len(pos)) # 隨機數(shù)轉(zhuǎn)化成概率 p= p/np.sum(p) # 根據(jù)每個數(shù)出現(xiàn)的概率,在 pos 中挑選 4000 個數(shù) a= np.random.choice(pos, size=4000, p=p) # 將 a 的取值范圍劃分為 96 個 bin bins=np.arange(-56,41) # 得到直方分布,hist 表示每個 bin 中數(shù)的個數(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ù)本身的波動情況,根據(jù)數(shù)值本身大小變換顏色
例圖,可以看到數(shù)值大時,熱力圖更紅,數(shù)值小時,熱力圖更藍
代碼
import matplotlib.pyplot as plt import numpy as np; np.random.seed(1) # 畫布大小 plt.rcParams["figure.figsize"] = 5,4 # 生成 40 個 sin 函數(shù)值 x = np.sin(range(40)) # 每x個數(shù)計算平均值,即一段內(nèi)的分布(此處取為1,即為每個數(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') # 不顯示橫縱坐標 plt.xticks([]) plt.yticks([]) # 繪制原始數(shù)據(jù)圖 plt.subplot(212) plt.plot(range(len(x)),x) # x軸顯示范圍從第一個數(shù)到最后一個 plt.xlim((0,len(x)-1)) plt.show()
attention 熱力圖繪制原理
難點在于數(shù)據(jù)獲取,獲取最后一層梯度數(shù)據(jù),即可知道注意力重點,根據(jù)梯度數(shù)據(jù) resize 到原始數(shù)據(jù),再畫出熱力圖(根據(jù)數(shù)據(jù)變化情況),之后與原始數(shù)據(jù)對應(yīng),即可得到網(wǎng)絡(luò)的高響應(yīng)熱力圖
到此這篇關(guān)于Python pytorch實現(xiàn)繪制一維熱力圖的文章就介紹到這了,更多相關(guān)Python繪制一維熱力圖內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
10個python3常用排序算法詳細說明與實例(快速排序,冒泡排序,桶排序,基數(shù)排序,堆排序,希爾排序,歸并排序,計數(shù)排
這篇文章主要介紹了10個python3常用排序算法詳細說明與實例,需要的朋友可以參考下2020-03-03教你用python提取txt文件中的特定信息并寫入Excel
這篇文章主要給大家介紹了如何利用python提取txt文件中的特定信息并寫入Excel的相關(guān)資料,Python是一個強大的語言,解決這點問題非常簡單,文中通過示例代碼介紹的非常詳細,需要的朋友可以參考下2021-11-11Pandas的DataFrame如何做交集,并集,差集與對稱差集
這篇文章主要介紹了Pandas的DataFrame如何做交集,并集,差集與對稱差集,Python的數(shù)據(jù)類型集合由不同元素組成的集合,集合中是一組無序排列的可?Hash?的值,可以作為字典的Key,下面來看看文章的詳細內(nèi)容吧2022-01-01Python編程判斷一個正整數(shù)是否為素數(shù)的方法
這篇文章主要介紹了Python編程判斷一個正整數(shù)是否為素數(shù)的方法,涉及Python數(shù)學運算相關(guān)操作技巧,需要的朋友可以參考下2017-04-04Python緩存方案優(yōu)化程序性能提高數(shù)據(jù)訪問速度
Python緩存方案是一種優(yōu)化程序性能,提高數(shù)據(jù)訪問速度的方案。通過緩存數(shù)據(jù),可以減少重復(fù)的計算和IO操作,從而提高程序的運行效率。Python中常用的緩存方案包括內(nèi)存緩存、磁盤緩存和分布式緩存等,根據(jù)實際需求選擇不同的方案可以幫助我們更好地優(yōu)化程序性能2023-05-05Python轉(zhuǎn)json時出現(xiàn)中文亂碼的問題及解決
這篇文章主要介紹了Python轉(zhuǎn)json時出現(xiàn)中文亂碼的問題及解決方案,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教2023-02-02