【问题标题】:Draw arrows between 3 points在 3 点之间画箭头
【发布时间】:2012-10-18 17:22:37
【问题描述】:

我正在尝试在 matplotlib 中的三个点之间绘制箭头。

假设我们在 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) 来接收箭头尾部和头部的坐标并绘制它?

【问题讨论】:

    标签: python matplotlib visualization


    【解决方案1】:

    除非您对所需方法有进一步特殊要求,否则可以使用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 自己完成此操作。

    【讨论】:

    • 完美运行,需要注意的一点;我发现当 A 和 B 相同时 plt.arrow() 返回错误。处理后,该功能正常工作。谢谢!
    猜你喜欢
    • 1970-01-01
    • 2013-11-30
    • 2018-01-21
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-12-08
    • 1970-01-01
    相关资源
    最近更新 更多