2014-02-08 35 views
0

我在矢量演算中创建一个ipython笔记本。 (至少基础知识)。 在这个代码块im试图有一个函数x^2 + XY + Y^2 的伪彩色绘图,并绘制它的矢量场由其梯度 U = 2X + Y和V = 2Y + XPython Matplotlib颤抖错误的方向

然而颤动情节似乎被旋转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

是不是你的图像旋转?当X和Y最大时(在abs意义上),您的渐变(GradX,GradY)应该最大,并且具有相同的符号,这是您当前图像中的情况,但如果您旋转颤抖图则不会。 – tom10

回答

3

没有指向我怀疑你需要:

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

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

分析:在你的公式,所有的ZGradXGradY应该是最大的幅度在(+,+)和( - , - )本次地块,这里的招牌“合作”的角落。正如你所发布的,只有颤抖阴谋有这个属性,所以它是旋转的图像。此外,图像总是存在这些问题(由于计算机惯例(图像从左上角索引)与数学惯例(Y轴的最小值在轴上绘制得最低)之间的冲突)。

enter image description here

+0

非常感谢!一旦我意识到这确实是错误的图像,我正要编辑这个问题。猜猜我有很多东西要学习... –