箭头坐标如何在matplotlib中工作?

时间:2016-05-25 15:12:33

标签: 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()

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

1 个答案:

答案 0 :(得分:3)

来自documentation

matplotlib.pyplot.arrow(x, y, dx, dy, hold=None, **kwargs) 
     

向轴添加箭头。

     

呼叫签名:

arrow(x, y, dx, dy, **kwargs)
     

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

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

x = 0.1, 
y = 0.5, 
dx = 0.5, 
dy = 0.5

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

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

ax.arrow(0.1, 0.5, 0.4, 0.0, etc...)