Draw arrows between 3 points

matplotlib, python, visualization

Solution

Unless you have further special requirements for your desired method, you can use pyplot's arrow function, e.g.:

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)

The API mentions some more keyword arguments; yet more style options can be found in the API for FancyArrow (which is what arrow actually creates under the hood).

Note that the arrows might be off-plot, as apparently pyplot will not necessarily adjust the plot's x/y limits to show them. You might have to do this yourself via plt.xlim and plt.ylim.

Problem

I am trying to draw arrows between three points in matplotlib. Let's assume we have 3 arbitrary points (A1,A2,A3) in 2d and we want to draw arrows from A1 to A2 and from A2 to A3. Some code to make it clear: ``` 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(); ``` How can we write a function drawArrow(tailCoord,headCoord) that receives the coordinates of the tail and the head of an arrow and plots it?

Original source