Python Matplotlib箭头方向错误

时间:2014-02-08 16:12:27

标签: python vector matplotlib calculus

我在矢量微积分上创建一个ipython笔记本。 (至少基础知识)。 在这段代码中我试图获得函数x ^ 2 + XY + Y ^ 2的伪彩色图 并在其上绘制由其梯度给出的矢量场 U = 2X + Y且V = 2Y + X

然而,箭袋图似乎旋转了90度,因此没有指向正确的方向

x = arange(-2.0, 2.0,00.1)
y = arange(-2.0, 2.0,00.1)
X,Y = meshgrid(x, y)
Z = X**2 + X*Y + Y**2
GradX = (2*X+Y)
GradY = (2*Y+X)
figure(figsize=(10, 10))
im = imshow(Z, cmap=cm.RdYlBu, interpolation='none', extent=[-2,2,-2,2])
quiver(X, Y, GradX, GradY, angles='xy', scale_units='xy')
show()

my plot

enter image description here

1 个答案:

答案 0 :(得分:3)

我怀疑你需要:

im = imshow(Z, cmap=cm.RdYlBu, interpolation='none', extent=[-2,2,-2,2], origin='lower')

也就是说,指定origin='lower'y=-2放在左下角。正如我在评论中提到的那样,我认为它是旋转的图像(实际上是翻转的 - 虽然它在这个图中有相同的差异),而不是箭头图。

分析:在你的方程式中,ZGradXGradY中的所有{(1}},{{1}}和{{1}}的大小应该是(+,+)和( - , - )角中最大的。情节,标志“合作”。正如您发布的那样,只有箭头图具有此属性,因此它是旋转的图像。此外,它始终是具有这些问题的图像(由于计算机约定之间的冲突,图像从左上角索引,而数学约定,Y的最小值在轴上最低)。

enter image description here