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

Matplotlib Quiver绘图异常求助:外正方形指向内正方形箭头出错

问题原因与解决方案

你的问题出在对matplotlib.pyplot.quiver函数参数的理解上:

  • quiver(X, Y, U, V)中的U和V是箭头的偏移向量分量,不是箭头终点的绝对坐标。
  • 你直接传入内正方形的绝对坐标corr_x、corr_y,导致箭头的方向和长度完全不符合预期。

修正步骤

  1. 计算从外正方形点到内正方形点的相对偏移量,用终点坐标减去起点坐标:
    u = corr_x - p_x
    v = corr_y - p_y
    
  2. 将偏移量传入quiver,同时建议添加scale_units='xy', scale=1参数,让箭头长度严格匹配坐标轴尺度,避免自动缩放导致的显示偏差。

修正后的完整代码:

import numpy as np
import matplotlib.pyplot as plt

p_x = np.array([1,10,10,1]).reshape(-1,1)
p_y = np.array([1,1,10,10]).reshape(-1,1)
corr_x = np.array([2,9,9,2]).reshape(-1,1)
corr_y = np.array([2,2,9,9]).reshape(-1,1)

# 计算相对偏移量
u = corr_x - p_x
v = corr_y - p_y

fig, ax = plt.subplots(figsize=(8,6))
# 传入偏移量并设置尺度参数
ax.quiver(p_x, p_y, u, v, scale_units='xy', scale=1)
# 调整坐标轴范围确保内容完整显示
ax.set_xlim(0, 11)
ax.set_ylim(0, 11)
plt.show()

运行后生成的箭头会从外正方形顶点指向对应内正方形顶点,完全符合预期。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.08 02:40:38