2012-10-29 3 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에서 찾을 수 있습니다 (이것은 화살표가 실제로 두포에서 만드는 것입니다).

화살표가 플롯에서 벗어난 것일 수 있습니다. 분명히 파이 Plot은 반드시 플롯의 x/y 한계를 조정하여 표시하지 않습니다. plt.xlimplt.ylim을 통해 직접 처리해야 할 수 있습니다.

+0

완벽하게 작동합니다. 나는 A와 B가 같을 때 plt.arrow()가 에러를 반환한다는 것을 발견했다. 이것을 처리 한 후에는 함수가 제대로 작동합니다. 감사! – MHardy