如何指定箭头坐标

mvd*_*mvd 0 python matplotlib

我尝试根据此示例(http://matplotlib.org/examples/pylab_examples/arrow_simple_demo.html)在matplotlib中绘制从(0.1,0.5)到(0.5,0.5)的箭头:

f = plt.figure()
ax = plt.subplot(2, 1, 1)
plt.xlim([0, 1])
plt.ylim([0, 1])
ax.arrow(0.1, 0.5, 0.5, 0.5,
         head_width=0.05,
         head_length=0.1,
         fc='k',
         ec='k',
         clip_on=False)
plt.show()
Run Code Online (Sandbox Code Playgroud)

这应该会产生一个水平箭头,但由于某种原因,它给出了一个不以 (0.5,0.5) 结尾的倾斜箭头。这里出了什么问题?

tmd*_*son 5

Axes.arrowpyplot.arrow:

.arrow(x, y, dx, dy, hold=None, **kwargs) 
Run Code Online (Sandbox Code Playgroud)

向轴添加箭头。

呼叫签名:

arrow(x, y, dx, dy, **kwargs)
Run Code Online (Sandbox Code Playgroud)

在指定轴上绘制从(x, y)到 的箭头(x + dx, y + dy)。使用 FancyArrow 补丁来构造箭头。

所以,在你的箭头中,你有:

x = 0.1, 
y = 0.5, 
dx = 0.5, 
dy = 0.5
Run Code Online (Sandbox Code Playgroud)

(0.1,0.5)因此,您将绘制一个从到 的箭头(0.6,1.0)

设置dy=0后你会得到一个水平箭头。(0.1,0.5)要获得从到 的箭头(0.5,0.5),您需要:

.arrow(x, y, dx, dy, hold=None, **kwargs) 
Run Code Online (Sandbox Code Playgroud)

在此输入图像描述