首页 > 解决方案 > 使用 FancyArrowPatch 绘制穿过选定点的箭头

问题描述

我正在尝试找到一种方法来绘制穿过我预先选择的点的箭头,并且我希望能够自由设置尾部宽度和该箭头的颜色。

我去查看 matplotlib 中的 FancyArrowPatch 库,我已经用它来绘制从一个点到另一个点的箭头。但是,我不能以令人满意的方式使用它。

例如,我试图在下面的代码中绘制一个箭头,从 (-10,0) 到 (0,9) 并穿过 (-5,9)。

import matplotlib.pyplot as plt
import matplotlib.patches as mpatch
import matplotlib.path as mpath


style = "simple,tail_width=10,head_width=30,head_length=60"
kw = dict(arrowstyle=style,color="#49107C")
Arrow = mpatch.FancyArrowPatch(path=mpath.Path([(-10,0),(-5,9),(0,9)],
mpath.Path.MOVETO,mpath.Path.CURVE3,mpath.Path.CURVE3]),**kw)
plt.gca().add_patch(Arrow)

运行该代码后,我没有得到预期的结果:即使我的箭头是弯曲的并且实际上从 (-10,0) 开始到 (0,9) 结束,它也没有通过 (-5,9 )。

这是我得到的:https ://i.imgur.com/QwPgmM2.png

在此处输入图像描述

我想知道是否有办法用那个库来解决这个问题,或者我是否必须使用另一个库来获得我想要的东西。

另一方面,我还希望能够绘制一个弯曲的箭头,该箭头在经过一个点后会返回到确切的起点(例如,从 (0, 0) 指向 (2,2) 并返回 (0,0)。)

预先感谢您的帮助 !

标签: python-3.xmatplotlib

解决方案


推荐阅读