【问题标题】:Python Matplotlib Quiver wrong orientationPython Matplotlib Quiver 方向错误
【发布时间】:2014-02-08 16:12:27
【问题描述】:

我正在创建一个关于向量微积分的 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

【问题讨论】:

  • 旋转的不是你的图片吗?当 X 和 Y 最大(在绝对意义上)并且具有相同的符号时,您的渐变 (GradX, GradY) 应该是最大的,这在您当前的图像中就是这种情况,但如果您旋转箭袋图则不会。

标签: python vector matplotlib calculus


【解决方案1】:

我怀疑你需要:

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

即指定origin='lower'y=-2放在左下角。正如我在评论中提到的,我认为是旋转的图像(实际上是翻转的——尽管在这个情节中它是相同的差异),而不是箭袋情节。

分析:在您的等式中,所有ZGradXGradY 都应该在图的 (+,+) 和 (-,-) 角的幅度上最大,其中符号 "合作”。正如您发布的那样,只有箭袋图具有此属性,因此旋转的是图像。此外,存在这些问题的总是图像(由于从左上角开始索引图像的计算机约定与将 Y 的最小值绘制在轴上最低的数学约定之间的冲突)。

【讨论】:

  • 非常感谢!一旦我意识到图像确实是错误的,我正要编辑这个问题。我想我还有很多东西要学……
猜你喜欢
  • 2021-07-08
  • 2016-05-07
  • 2017-03-30
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多