【问题标题】:How to add arrows to line plots in Matlab?如何在 Matlab 中为线图添加箭头?
【发布时间】:2010-09-30 12:41:43
【问题描述】:

我想在 Matlab 中的线图中添加箭头来说明流程。理想情况下,箭头应位于指向直线方向的直线上。这可能吗?

【问题讨论】:

标签: matlab plot


【解决方案1】:

为了在 Matlab 中绘制箭头,请使用名为 arrow.m 的文件交换免费包

【讨论】:

    【解决方案2】:

    另一种方法是在 FileExchange 上使用出色的提交 - ARROW.M

    另请参阅关于 SO 的其他相关问题:

    【讨论】:

      【解决方案3】:

      quiver 功能应该可以做你想做的事。但是,您必须自己计算箭头的方向。

      类似的东西很丑,但应该让你开始(但你可能想要标准化方向向量以获得更好的图形)

      plot(x,y)
      hold on
      quiver(x(1:end-1),  y(1:end-1), ones(len(x)-1,1), y(2:end) - y(1:end-1))
      

      【讨论】:

        【解决方案4】:

        如果我理解正确,您是在尝试查看矢量场吗? 如果是这种情况,这里有一个工作示例:

        %# function: f(x,y)=x^3-2y^2-3x over x=[-2,2], y=[-1,1]
        [X Y] = meshgrid(-2:.1:2, -1:.1:1);
        Z = X.^3 -2*Y.^2 -3*X;
        
        %# gradient of f
        [dX dY] = gradient(Z, .1, .1);
        
        %# plot the vector field and contour levels
        figure, hold on
        quiver(X, Y, dX, dY)
        contour(X, Y, Z, 10)
        axis equal, axis([-2 2 -1 1])
        hold off
        
        %# plot surface
        figure, surfc(X, Y, Z)
        view(3)
        

        【讨论】:

          【解决方案5】:

          您可以使用函数annotation向图形添加箭头。

          注意,对象的父对象不是坐标轴,而是图形窗口iteslf(这意味着当您放大/缩小时,箭头会保持在图形窗口中的同一位置)。

          【讨论】: