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

Matplotlib Quiver绘图异常:向量未从原点出发及显示与定义不符的问题排查与解决

解决Matplotlib Quiver向量绘图的两个常见问题

嘿,这两个问题其实都是对Matplotlib的quiver()函数参数理解偏差导致的,很容易踩坑,我来帮你拆解清楚!

问题1:为什么向量没有从原点(0,0)出发?如何修复?

你之所以遇到这个问题,核心是搞反了quiver()的参数逻辑:plt.quiver()的前两个参数是向量的起点坐标,而非向量本身的分量。

你之前的代码里,v1 = np.array([6,8])和x = np.array([6,0])被当作了两个向量的起点x、y坐标——第一个向量的起点是(6,6),第二个是(8,0),自然不会从原点出发。

要让两个向量都从原点出发,你需要把前两个参数设置为包含两个原点坐标的数组(对应两个向量的起点),也就是[0, 0]和[0, 0],然后再传入向量的分量作为后续参数。

问题2:显示的向量与定义不符,为什么?该如何修复?

同样是参数顺序的问题!quiver()的基础参数结构是:

plt.quiver(X, Y, U, V, ...)

其中:

  • X, Y:所有向量的起点x、y坐标数组
  • U, V:所有向量的x分量、y分量数组

你之前只传了X=v1和Y=x,没有指定U和V,Matplotlib会默认使用默认值(或自动缩放生成错误分量),导致显示的向量和你定义的完全不一致。

完整修复后的代码

下面是修正后的代码,不仅让向量从原点出发,还能准确显示你定义的两个向量:

import numpy as np
import matplotlib.pyplot as plt

v1 = np.array([6, 8])
x = np.array([6, 0])

# 两个向量的起点都是(0,0),所以X、Y传入[0, 0]
# U是两个向量的x分量,V是两个向量的y分量
plt.quiver([0, 0], [0, 0], [v1[0], x[0]], [v1[1], x[1]], angles='xy', scale_units='xy', scale=1)

plt.xlim(-1, 10)
plt.ylim(-1, 10)
plt.grid(True)  # 新增网格,更直观查看坐标
plt.show()

运行这段代码后,你就能看到从原点出发的两个向量:一个是(6,8),另一个是(6,0),完全符合你的定义。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.04.29 20:47:48