Python實現(xiàn)矩陣可視化的示例代碼
imshow和matshow
matplotlib中提供了兩個矩陣可視化函數(shù),分別是imshow和matshow,由于二者過于相似,且imshow常被用做圖片展示工具,所以matshoww這個函數(shù)基本沒什么人知道,總之二者對比如下
import matplotlib.pyplot as plt import numpy as np x = np.random.rand(5,5) fig,axes = plt.subplots(1,2,figsize=(8,4)) axes[0].imshow(x) plt.title("imshow") axes[1].matshow(x) plt.title("matshow") plt.tight_layout() plt.show()
但無論是imshow也好,還是matshow也罷,對矩陣,尤其是小矩陣,展示得并不完美,徒有偽彩色對應(yīng),而并無具體的數(shù)值,那么對于一些需要看到實際數(shù)值的場合,其表現(xiàn)力當(dāng)然是不夠的。
顯示數(shù)值
所以接下來,就要在特定的格子中,寫下矩陣的具體數(shù)值。
from itertools import product M,N = 3,6 x = np.random.rand(M,N) plt.matshow(x) for i,j in product(range(M),range(N)): plt.text(j-0.15, i, f"{x[i,j]:.2}") plt.show()
product是排列組合迭代器,可以將輸入序列的元素兩兩組合在一起,從而避免循環(huán)嵌套。plt.text的作用就是顯示數(shù)值,其中j表示x坐標(biāo),i表示y軸坐標(biāo)。在矩陣索引中,i表示行號,j表示列號。
這張圖當(dāng)然也有問題,由于文字是橫著寫的,但矩陣中的格子卻是正方形的,這個顯然看上去不太和諧。如果用pcolormesh
這種像素形狀可以更改的函數(shù),顯然更加合適。
但pcolormesh有兩個問題,一是坐標(biāo)軸方向和矩陣下標(biāo)的方向不符,二是坐標(biāo)標(biāo)簽的位置并不指格點中間,為此需要稍加改造。
def drawMat(x, ax=None): M, N = x.shape if not ax: ax = plt.subplot() arrM, arrN = np.arange(M), np.arange(N) plt.yticks(arrM+0.5, arrM) plt.xticks(arrN+0.5, arrN) ax.pcolormesh(x) ax.invert_yaxis() for i,j in product(range(M),range(N)): ax.text(j+0.2, i+0.55, f"{x[i,j]:.2}") plt.show() x = np.random.rand(5,5) drawMat(x)
其中,xticks和yticks用于重新映射坐標(biāo),將N.5映射為N,這樣坐標(biāo)位置也就轉(zhuǎn)化為了具體數(shù)值;invert_yaxis表示y軸坐標(biāo)翻轉(zhuǎn),從而直角坐標(biāo)系被改為矩陣坐標(biāo)系。
效果如下
到此這篇關(guān)于Python實現(xiàn)矩陣可視化的示例代碼的文章就介紹到這了,更多相關(guān)python矩陣可視化內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
python攻防-破解附近局域網(wǎng)WIFI密碼實現(xiàn)上網(wǎng)自由
本文將記錄學(xué)習(xí)如何通過 Python 腳本實破解附近局域網(wǎng) WIFI 密碼的暴力破解,隨時隨地免費蹭網(wǎng),再也不被WiFi密碼困擾,實現(xiàn)蹭網(wǎng)自由2021-08-08Python開發(fā)工具PyCharm的下載與安裝步驟圖文教程
這篇文章主要為大家介紹了Python開發(fā)工具PyCharm的下載與安裝步驟圖文教程,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪2023-07-07Python實現(xiàn)本地緩存的幾種方法小結(jié)
緩存是一種常見的技術(shù),用于存儲重復(fù)請求的結(jié)果,Python 作為一種靈活的編程語言,提供了多種實現(xiàn)本地緩存的方法,本文將探討 Python 中實現(xiàn)本地緩存的幾種策略,并提供具體的代碼示例,感興趣的小伙伴跟著小編一起來看看吧2024-07-07Python轉(zhuǎn)換字典成為對象,可以用"."方式訪問對象屬性實例
這篇文章主要介紹了Python轉(zhuǎn)換字典成為對象,可以用"."方式訪問對象屬性實例,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧2020-05-05通過selenium抓取某東的TT購買記錄并分析趨勢過程解析
這篇文章主要介紹了通過selenium抓取某東的TT購買記錄并分析趨勢過程解析,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友可以參考下2019-08-08