2012-10-29 48 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