Python實(shí)現(xiàn)矩陣可視化的示例代碼
imshow和matshow
matplotlib中提供了兩個(gè)矩陣可視化函數(shù),分別是imshow和matshow,由于二者過于相似,且imshow常被用做圖片展示工具,所以matshoww這個(gè)函數(shù)基本沒什么人知道,總之二者對(duì)比如下
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也罷,對(duì)矩陣,尤其是小矩陣,展示得并不完美,徒有偽彩色對(duì)應(yīng),而并無具體的數(shù)值,那么對(duì)于一些需要看到實(shí)際數(shù)值的場(chǎng)合,其表現(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表示行號(hào),j表示列號(hào)。
這張圖當(dāng)然也有問題,由于文字是橫著寫的,但矩陣中的格子卻是正方形的,這個(gè)顯然看上去不太和諧。如果用pcolormesh
這種像素形狀可以更改的函數(shù),顯然更加合適。
但pcolormesh有兩個(gè)問題,一是坐標(biāo)軸方向和矩陣下標(biāo)的方向不符,二是坐標(biāo)標(biāo)簽的位置并不指格點(diǎn)中間,為此需要稍加改造。
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實(shí)現(xiàn)矩陣可視化的示例代碼的文章就介紹到這了,更多相關(guān)python矩陣可視化內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
python攻防-破解附近局域網(wǎng)WIFI密碼實(shí)現(xiàn)上網(wǎng)自由
本文將記錄學(xué)習(xí)如何通過 Python 腳本實(shí)破解附近局域網(wǎng) WIFI 密碼的暴力破解,隨時(shí)隨地免費(fèi)蹭網(wǎng),再也不被WiFi密碼困擾,實(shí)現(xiàn)蹭網(wǎng)自由2021-08-08Python開發(fā)工具PyCharm的下載與安裝步驟圖文教程
這篇文章主要為大家介紹了Python開發(fā)工具PyCharm的下載與安裝步驟圖文教程,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪2023-07-07python中altair可視化庫(kù)實(shí)例用法
在本篇文章里小編給大家整理的是一篇關(guān)于python中altair可視化庫(kù)實(shí)例用法,對(duì)此有興趣的朋友們可以學(xué)習(xí)下。2021-01-01Python編寫漏洞驗(yàn)證腳本批量測(cè)試繁瑣漏洞
這篇文章主要為大家介紹了Python編寫漏洞驗(yàn)證腳本來批量測(cè)試繁瑣的漏洞實(shí)現(xiàn),有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步2022-02-02Python實(shí)現(xiàn)本地緩存的幾種方法小結(jié)
緩存是一種常見的技術(shù),用于存儲(chǔ)重復(fù)請(qǐng)求的結(jié)果,Python 作為一種靈活的編程語言,提供了多種實(shí)現(xiàn)本地緩存的方法,本文將探討 Python 中實(shí)現(xiàn)本地緩存的幾種策略,并提供具體的代碼示例,感興趣的小伙伴跟著小編一起來看看吧2024-07-07Python轉(zhuǎn)換字典成為對(duì)象,可以用"."方式訪問對(duì)象屬性實(shí)例
這篇文章主要介紹了Python轉(zhuǎn)換字典成為對(duì)象,可以用"."方式訪問對(duì)象屬性實(shí)例,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過來看看吧2020-05-05Python使用騰訊云API實(shí)現(xiàn)短信驗(yàn)證碼功能
使用Python與騰訊云接口對(duì)接,實(shí)現(xiàn)短信驗(yàn)證碼功能變得非常簡(jiǎn)單,只需要幾行代碼就能夠輕松實(shí)現(xiàn)短信的發(fā)送,無須關(guān)心復(fù)雜的短信協(xié)議和底層實(shí)現(xiàn),讀者可以根據(jù)自己的實(shí)際需求,靈活使用騰訊云短信SDK提供的API來實(shí)現(xiàn)更豐富的短信功能2024-01-01通過selenium抓取某東的TT購(gòu)買記錄并分析趨勢(shì)過程解析
這篇文章主要介紹了通過selenium抓取某東的TT購(gòu)買記錄并分析趨勢(shì)過程解析,文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下2019-08-08