2012-10-29 101 views
4

我想繪製matplotlib中三點之間的箭頭。matplotlib箭頭3點之間

我們假設我們在2d中有3個任意點(A1,A2,A3),並且我們想從A1到A2和從A2到A3繪製箭頭。

一些代碼,使其明確:

import numpy as np 
import matplotlib.pyplot as plt 
A1=np.array([10,23]) 
A2=np.array([20,30]) 
A3=np.array([45,78]) 
drawArrow(A1,A2); 
drawArrow(A2,A3); 
plt.show(); 

我們怎樣才能寫出接收尾部的座標和箭頭的頭部,並繪製它的功能drawArrow(tailCoord,headCoord)?

回答

5

除非你有你想要的方法,還特別要求,可以使用pyplot's arrow function,例如:

def drawArrow(A, B): 
    plt.arrow(A[0], A[1], B[0] - A[0], B[1] - A[1], 
       head_width=3, length_includes_head=True) 

的API提到了一些關鍵字參數;但更多的風格選項可以在the API for FancyArrow中找到(這是箭頭實際在引擎蓋下創建的)。

請注意,箭頭可能是離線繪圖,因爲顯然pyplot不一定會調整繪圖的x/y限制以顯示它們。您可能需要通過plt.xlimplt.ylim自己完成此操作。

+0

完美地工作,有一點需要注意;我發現當A和B相同時,plt.arrow()會返回一個錯誤。處理完後,該功能正常工作。謝謝! – MHardy