Matplotlib Quiver绘图异常求助:外正方形指向内正方形箭头出错
问题原因与解决方案
你的问题出在对matplotlib.pyplot.quiver函数参数的理解上:
quiver(X, Y, U, V)中的U和V是箭头的偏移向量分量,不是箭头终点的绝对坐标。- 你直接传入内正方形的绝对坐标
corr_x、corr_y,导致箭头的方向和长度完全不符合预期。
修正步骤
- 计算从外正方形点到内正方形点的相对偏移量,用终点坐标减去起点坐标:
u = corr_x - p_x v = corr_y - p_y - 将偏移量传入
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
相关产品推荐
相关产品推荐

