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

在Julia中使用quiver绘制箭头时出现额外镜像线条问题求助

Julia Quiver绘图出现镜像线条的问题解决

问题原因

你遇到的额外镜像线条,本质是图像坐标系和常规绘图坐标系的y轴方向冲突:

  • 用plot(white_img)绘制图像时,Plots默认使用图像坐标系——y轴从上到下数值递增;
  • 而quiver!默认遵循笛卡尔坐标系——y轴从下到上数值递增。
    两者叠加后,箭头的y方向被反转,看起来像是出现了镜像线条。

Quiver绘图机制说明

quiver!是在当前绘图的坐标系上叠加箭头:

  • 箭头起点为(X[i], Y[i]),完全对应当前轴的刻度位置;
  • 箭头的方向和长度由(VX[i], VY[i])决定,严格遵循当前坐标系的轴方向。
    如果当前坐标系的y轴方向和你预期的笛卡尔方向相反,向量的y分量就会被反向,造成“镜像线条”的视觉效果。

解决方法

方法1:直接使用常规坐标系(推荐)

不需要先绘制图像,直接设置绘图背景为白色,让quiver在笛卡尔坐标系下工作:

using Plots
X = [2, 10, 12, 20, 22, 30]
Y = [2, 10, 12, 20, 22, 30]
VX = [2, 8, 2, 8, 2, 8]
VY = [2, 8, 2, 8, 2, 8]
# 设置白色背景,同时限定轴范围匹配需求
plot(background_color=:white, xlims=(0, 35), ylims=(0, 35))
quiver!(X, Y, quiver=(VX, VY))

方法2:保留图像背景,反转y轴对齐坐标系

如果必须用图像作为背景,只需在绘制图像时反转y轴,让图像坐标系和quiver的笛卡尔坐标系一致:

using Plots, ColorTypes
X = [2, 10, 12, 20, 22, 30]
Y = [2, 10, 12, 20, 22, 30]
VX = [2, 8, 2, 8, 2, 8]
VY = [2, 8, 2, 8, 2, 8]
white_img = fill(Gray(1.0), 50, 50)
# 添加yflip=true反转y轴,对齐坐标系
plot(white_img, yflip=true)
quiver!(X, Y, quiver=(VX, VY))

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.07 18:22:43