Python繪制箭頭向量圖的示例代碼
簡介
箭頭向量圖十分常見,比如天氣預(yù)報(bào)在顯示風(fēng)場的時(shí)候,就會貼心地用箭頭指明風(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()

這個圖需要4組變量,分別是X,Y,U,V,其中X,Y可以理解為坐標(biāo)起點(diǎn),U,V則是向量在X和Y方向的強(qiáng)度。
這個繪圖函數(shù)雖然簡潔,但其實(shí)有個問題,即X和Y都是一維數(shù)組,而在繪制quiver的時(shí)候,卻自轉(zhuǎn)換成了二維數(shù)組,否則圖像上不可能有這么多的點(diǎn),更不能和U,V一一對應(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ù)可以定制箭頭的線寬、頭寬、頭長等信息,具體參數(shù)如下圖所示

在具體設(shè)置時(shí),length通過U,V參數(shù)指定,width為絕對的寬度,一般比較小,剩下三個參數(shù)均是width的倍數(shù),是相對值。
另外,如果想給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é)果如下

三維場圖
quiver函數(shù)只需添加一個三維坐標(biāo)就可以無縫體驗(yàn)三維場圖。下面假設(shè)空間中有三顆恒星,那么用場圖來表示這三顆恒星附近的引力指向。
萬有引力公式F=Gmm/r2?,簡單起見,讓三顆恒星的質(zhì)量都是1, G也取1,則其個方向分量可表示為

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)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
Pandas借助Numpy實(shí)現(xiàn)優(yōu)化的條件檢索代碼
Numpy其實(shí)是最早的處理數(shù)據(jù)的Python庫,它的核心ndarray對象,是一個高效的n維數(shù)組結(jié)構(gòu),本文主要介紹了Pandas如何借助Numpy優(yōu)化條件檢索,感興趣的可以了解下2024-03-03
在Python中使用M2Crypto模塊實(shí)現(xiàn)AES加密的教程
這篇文章主要介紹了在Python中使用M2Crypto模塊實(shí)現(xiàn)AES加密的教程,例子中的方法使用aes_128_ecb算法,需要的朋友可以參考下2015-04-04
Python命令行參數(shù)解析工具 docopt 安裝和應(yīng)用過程詳解
這篇文章主要介紹了Python命令行參數(shù)解析工具 docopt 安裝和應(yīng)用過程詳解,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下2019-09-09
python3學(xué)習(xí)之Splash的安裝與實(shí)例教程
splash 是一個python語言編寫的用于配合scrapy解析js的庫,下面這篇文章主要給大家介紹了關(guān)于python3學(xué)習(xí)之Splash的安裝與使用的一些相關(guān)資料,文中通過示例代碼介紹的非常詳細(xì),需要的朋友可以參考下2018-07-07
詳解pycharm連接不上mysql數(shù)據(jù)庫的解決辦法
這篇文章主要介紹了詳解pycharm連接不上mysql數(shù)據(jù)庫的解決辦法,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧2020-01-01

