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

Python Matplotlib中向量绘制异常问题求助

解决Matplotlib Quiver向量绘制异常问题

你遇到的问题根源是对plt.quiver()的参数理解有误,加上默认自动缩放机制放大了问题:

  • plt.quiver(X, Y, U, V)中,U和V是向量的x/y方向增量,不是终点坐标
  • 默认情况下quiver会自动缩放箭头长度适配坐标轴,导致短向量(比如你右上角的向量)显示异常

修正方案:

  1. 从向量数组中计算出正确的增量值(终点坐标 - 起点坐标)
  2. 设置scale_units='xy', scale=1,强制向量按实际坐标比例显示,关闭自动缩放

修正后的代码:

import matplotlib.pyplot as plt

vectors = [
    [-1, 0, 1, 0],
    [9, 0, 11, 0],
    [0, 9, 0, 11],
    [10, 9, 10, 11]
]

for vec in vectors:
    x_start, y_start, x_end, y_end = vec
    # 计算向量的x、y方向增量
    dx = x_end - x_start
    dy = y_end - y_start
    # 按真实坐标比例绘制向量
    plt.quiver(x_start, y_start, dx, dy, scale_units='xy', scale=1)

plt.grid(True)
# 调整坐标轴范围,确保所有向量完整显示
plt.xlim(-2, 12)
plt.ylim(-1, 12)
plt.show()

补充说明:

  • 拆分每个向量的起点和终点,计算出真实的dx和dy,这是向量的核心参数
  • scale_units='xy'指定用坐标轴单位衡量向量长度,scale=1保证1单位增量对应坐标轴上1单位长度
  • 手动设置坐标轴范围,避免边缘向量被裁剪

这样所有向量就能正常显示,包括右上角的垂直短向量。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.26 14:30:57