Matplotlib Pyplot绘制垂直向量时出现倾斜问题求助
问题原因与解决方法
核心问题
ax.quiver()参数理解错误:它的前两个参数是向量起点坐标(x, y),后两个参数是向量的偏移量(dx, dy),不是终点坐标。你直接把终点坐标传成偏移量,导致向量方向完全出错。- 坐标定义混乱:你想要x起始与终点相同,那x方向偏移量应为0,而非162890;同时你设置的x轴范围
left=299595,但向量起点x坐标是299400,不在当前轴范围内,进一步加剧显示异常。
修正后的代码
import matplotlib.pyplot as plt # 明确向量起点与终点坐标 start_x, start_y = 299400, 162305 end_x, end_y = 299400, 162890 # x坐标一致,保证向量垂直 # 计算向量偏移量(终点减起点) dx = end_x - start_x dy = end_y - start_y # 绘图轴范围 top = 163440 bottom = 161910 left = 299595 right = 300510 fig, ax = plt.subplots() # 添加参数保证向量严格按坐标比例绘制,避免变形 ax.quiver(start_x, start_y, dx, dy, angles='xy', scale_units='xy', scale=1) plt.xlim(left, right) plt.ylim(bottom, top) # 注释自动缩放,保留手动设置的轴范围 # plt.autoscale() plt.show()
关键说明
angles='xy', scale_units='xy', scale=1这三个参数能确保向量方向、长度完全匹配坐标轴比例,不会因轴缩放比例不同而变形。- 必须手动计算偏移量,不能直接传入终点坐标给
quiver。 - 关闭
plt.autoscale(),避免它覆盖你手动设置的轴范围。
内容的提问来源于stack exchange,提问作者wickedpanda
相关产品推荐
相关产品推荐

