【问题标题】:Labeled, horizontal arrows pointing into a vertical line指向垂直线的带标签的水平箭头
【发布时间】:2021-01-27 00:49:17
【问题描述】:

我正在尝试绘制一些注释以配合我的阶跃函数图。我目前有这些图表,我一直在试图弄清楚如何绘制指向垂直线的水平箭头。我还需要有标签的垂直线指向水平线。

我附上了一张图片,显示(红色)我的意思。我已经尝试过 annotation() 函数,但是将箭头放在我想要的位置确实很痛苦。如果有人不介意解释如何使用该功能,或者我想要实现的替代方法,那就太棒了!

编辑:有没有办法编辑 Quiver 箭头大小?

【问题讨论】:

    标签: matlab plot transfer-function


    【解决方案1】:

    在 2D 子图中使用 Quiver

    不太确定这是否更好或更简单,但我使用quiver() 函数绘制如下所示的线条。在这种情况下,quiver() 函数接受一些输入。在下面的完整脚本中,我使用了两倍数量的 quiver() 调用来绘制重叠箭头以创建双头箭头。


    函数调用:

    quiver(Start_Point(1),Start_Point(2),X_Displacement,Y_Displacement,0);
    

    • Start_Point → 等于 [x y]x 坐标 y 坐标
    • Start_Point(1) → 箭头起点的x坐标
    • Start_Point(2) → 箭头起点的y坐标
    X_Displacement → 到数组开头的水平距离
    Y_Displacement → 到数组开头的垂直距离


    设置箭头的最大尺寸:

    可以使用'MaxHeadSize'属性设置箭头的最大尺寸。

    clf;
    Start_Point(1) = 0;
    Start_Point(2) = 0;
    X_Displacement = 0; Y_Displacement = 10;
    Magnitude = sqrt(X_Displacement.^2 + Y_Displacement.^2);
    
    quiver(Start_Point(1),Start_Point(2),X_Displacement,Y_Displacement,0,'Color','r','MaxHeadSize',1/Magnitude);
    hold on 
    
    Start_Point(1) = 0;
    Start_Point(2) = 0;
    X_Displacement = 100; Y_Displacement = 0;
    Magnitude = sqrt(X_Displacement.^2 + Y_Displacement.^2);
    quiver(Start_Point(1),Start_Point(2),X_Displacement,Y_Displacement,0,'Color','r','MaxHeadSize',1/Magnitude);
    

    【讨论】:

    • 完美!非常感谢您的帮助!
    • @Cory 没问题,很乐意提供帮助。
    • 我能够得到箭头,但对于我的某些功能,箭头很大。有没有办法让它们达到一定的尺寸?我用一个例子编辑了最初的帖子。
    • 使用MaxHeadSize 属性可能会有所帮助。我在答案中添加了一个脚本,试图根据箭头的大小/长度对其进行标准化,因为箭头与其长度成正比。
    猜你喜欢
    • 2016-02-14
    • 1970-01-01
    • 2017-06-30
    • 1970-01-01
    • 1970-01-01
    • 2020-02-24
    • 2015-09-27
    • 1970-01-01
    • 2013-05-31
    相关资源
    最近更新 更多