You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

为什么matplotlib.pyplot.quiver文档标注的U、V参数顺序与实际使用不符?

原因说明

这个问题不属于函数bug,是numpy.gradient返回值的维度顺序和plt.quiver的参数维度定义不一致导致的:

  • 二维数组传入numpy.gradient时,返回值顺序为行方向梯度、列方向梯度:你代码里写的x,y = numpy.gradient(array_2d),其实是把对应y轴变化的行方向梯度赋值给了x,对应x轴变化的列方向梯度赋值给了y。
  • plt.quiver的参数要求按顺序传入x方向分量U、y方向分量V,刚好和numpy.gradient的返回顺序相反。

你之前交换参数后结果符合预期,是因为plt.quiver(y, x)刚好把存储在y里的列方向(x轴)梯度作为U参数传入,存储在x里的行方向(y轴)梯度作为V参数传入,刚好匹配plt.quiver的参数要求。

推荐写法

建议调整接收梯度返回值的变量名,避免后续逻辑混淆:

import numpy
import matplotlib.pyplot as plt

# dy存储行方向(y轴)梯度,dx存储列方向(x轴)梯度
dy, dx = numpy.gradient(array_2d)
plt.quiver(dx, dy)

内容的提问来源于stack exchange,提问作者Igor Kolesnikov

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.09.25 18:27:03