Python繪制箭頭向量圖的示例代碼
簡(jiǎn)介
箭頭向量圖十分常見,比如天氣預(yù)報(bào)在顯示風(fēng)場(chǎng)的時(shí)候,就會(huì)貼心地用箭頭指明風(fēng)的方向。在matplotlib中,用 quiver
函數(shù)來繪制箭頭向量圖,示例如下
import matplotlib.pyplot as plt import numpy as np X = np.arange(-2, 2, 0.2) Y = np.arange(-1, 1, 0.2) U, V = np.meshgrid(X, Y) fig = plt.figure(figsize=(6,3)) plt.quiver(X, Y, U, V) plt.tight_layout() plt.show()
這個(gè)圖需要4組變量,分別是X,Y,U,V,其中X,Y可以理解為坐標(biāo)起點(diǎn),U,V則是向量在X和Y方向的強(qiáng)度。
這個(gè)繪圖函數(shù)雖然簡(jiǎn)潔,但其實(shí)有個(gè)問題,即X和Y都是一維數(shù)組,而在繪制quiver的時(shí)候,卻自轉(zhuǎn)換成了二維數(shù)組,否則圖像上不可能有這么多的點(diǎn),更不能和U,V一一對(duì)應(yīng),可見在quiver圖中,U,V參數(shù)顯然更重要一些。實(shí)際上也是如此,如果省略X,Y參數(shù),那么得到的圖像將建立自然計(jì)數(shù)坐標(biāo)系,
fig = plt.figure(figsize=(6,3)) plt.quiver(U, V) plt.tight_layout() plt.show()
箭頭設(shè)置
箭頭向量圖的特點(diǎn)幾乎都在箭頭這了,如果沒有箭頭,那quiver和散點(diǎn)圖也就沒什么區(qū)別了。quiver函數(shù)可以定制箭頭的線寬、頭寬、頭長(zhǎng)等信息,具體參數(shù)如下圖所示
在具體設(shè)置時(shí),length通過U,V參數(shù)指定,width為絕對(duì)的寬度,一般比較小,剩下三個(gè)參數(shù)均是width的倍數(shù),是相對(duì)值。
另外,如果想給quiver圖上色,需要設(shè)置C后者color參數(shù)。
具體示例如下
C = np.sqrt(U**2+V**2) style = dict(width=0.005, headwidth=8, headlength=6, headaxislength=4) fig = plt.figure(figsize=(6,3)) plt.quiver(X, Y, U, V, C, **style) plt.tight_layout() plt.show()
繪圖結(jié)果如下
三維場(chǎng)圖
quiver函數(shù)只需添加一個(gè)三維坐標(biāo)就可以無縫體驗(yàn)三維場(chǎng)圖。下面假設(shè)空間中有三顆恒星,那么用場(chǎng)圖來表示這三顆恒星附近的引力指向。
萬有引力公式F=Gmm/r2?,簡(jiǎn)單起見,讓三顆恒星的質(zhì)量都是1, G也取1,則其個(gè)方向分量可表示為
x, y, z = np.indices([5,5,5])/5 stars = np.random.rand(3, 3).reshape(-1,3) u = v = w = 0 # 表示引力 for xi, yi, zi in stars: dx, dy, dz = xi-x, yi-y, zi-z dr = np.sqrt(dx**2+dy**2+dz**2) u += dx/dr**3 v += dy/dr**3 w += dz/dr**3 F = u**2 + v**2 + w**2 ax = plt.subplot(projection='3d') ax.scatter(*stars.T, c='r') style = dict(width=0.005, headwidth=8, headlength=6, headaxislength=4) ax.quiver(x, y, z, u, v, w, length=0.1, normalize=True) plt.tight_layout() plt.show()
結(jié)果如下
到此這篇關(guān)于Python繪制箭頭向量圖的示例代碼的文章就介紹到這了,更多相關(guān)Python箭頭向量圖內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
Python concurrent.futures模塊使用實(shí)例
這篇文章主要介紹了Python concurrent.futures模塊使用實(shí)例,文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下2019-12-12Python+Django在windows下的開發(fā)環(huán)境配置圖解
Python+Django在windows下的開發(fā)環(huán)境配置圖解教程,需要的朋友可以參考下。2009-11-11Linux 下 Python 實(shí)現(xiàn)按任意鍵退出的實(shí)現(xiàn)方法
這篇文章主要介紹了Linux 下 Python 實(shí)現(xiàn)按任意鍵退出的實(shí)現(xiàn)方法的相關(guān)資料,本文介紹的非常詳細(xì),具有參考借鑒價(jià)值,需要的朋友可以參考下2016-09-09python 返回一個(gè)列表中第二大的數(shù)方法
今天小編就為大家分享一篇python 返回一個(gè)列表中第二大的數(shù)方法,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過來看看吧2019-07-07pandas進(jìn)行數(shù)據(jù)輸入和輸出的方法詳解
這篇文章主要為大家詳細(xì)介紹了pandas進(jìn)行數(shù)據(jù)輸入和輸出的方法,文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下,希望能夠給你帶來幫助2022-03-03python sys,os,time模塊的使用(包括時(shí)間格式的各種轉(zhuǎn)換)
這篇文章主要介紹了python sys,os,time模塊的使用(包括時(shí)間格式的各種轉(zhuǎn)換),小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,也給大家做個(gè)參考。一起跟隨小編過來看看吧2018-04-04Python中用try-except-finally處理異常問題
這篇文章主要介紹了Python中用try-except-finally處理異常問題,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教2022-12-12詳解Python中圖像邊緣檢測(cè)算法的實(shí)現(xiàn)
這篇文章主要為大家詳細(xì)介紹了python中圖像邊緣檢測(cè)算法的原理及實(shí)現(xiàn),文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2022-05-05