6

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) をどのように書くことができるでしょうか?

4

1 に答える 1

6

目的のメソッドにさらに特別な要件がない限り、pyplot のアロー関数を使用できます。たとえば、次のようになります。

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 には、さらにいくつかのキーワード引数が記載されています。FancyArrow の API には、さらに多くのスタイル オプションがあります(これは、矢印が内部で実際に作成するものです)。

どうやら pyplot は必ずしもプロットの x/y 制限を調整してそれらを表示するとは限らないため、矢印はプロットから外れている可能性があることに注意してください。plt.xlimおよびplt.ylimを使用して、自分でこれを行う必要がある場合があります。

于 2012-10-29T15:40:19.353 に答える