【问题标题】:Best way to plot marks on a line in Matlab在 Matlab 中的线上绘制标记的最佳方法
【发布时间】:2016-10-30 09:01:40
【问题描述】:

这个问题很基础,但我正在寻找最好的方法。 对于matlab中绘制的线,如何标记线上的几个点。我知道可以直接使用标记进行绘图。但是,如果线已经被绘制并且标记只是为了区分图。而不是选择几个点并第二次绘制。下图是一个例子

【问题讨论】:

    标签: matlab plot matlab-figure


    【解决方案1】:

    在创建初始图之后,您可以使用命令“hold on”来保持该图“实时”,然后将点重新绘制为标记。例如:

    x=1:10;
    y=2*x+4;
    plot(x,y)
    hold on
    plot(x,y,'+')
    

    您可以使用“*”、“.”或任何其他标记而不是“+”。

    如果您希望标记均匀分布(并且您的数据最初不是),您可以创建一个均匀分布的 x 向量,然后假设您的绘图不是太极端,插入 y 值并仅添加点。例如:

    x=[1,1.5,2,2.3,3,4,4.8,5,6.1,6,7,8,9,10];
    y=2*x.^2+4;
    plot(x,y)
    hold on
    x_lin=linspace(min(x),max(x),20);
    y_lin=interp1(x,y,x_lin,'linear');
    plot(x_lin,y_lin,'+')
    hold off
    

    结果如下:

    如果 'linear' 没有给出足够好的结果,您可以尝试其他插值方法,例如 'cubic'、'spline'...

    【讨论】:

    • 谢谢@Omer!使用“+”号很合适,但它没有给出如图所示的均匀间距。我希望它在均匀间隔的点而不是所有点上绘制符号。
    • ToIf x 和 y 之间的关系不是太“极端”,你可以
    • 最后一条评论是偶然的。我在回复中添加了回答我现在理解为您的问题的内容。
    【解决方案2】:

    如果您不想在第二个时刻“添加”标记点(但我认为您不会有一些优势),请考虑

    A) 使用两个绘图指令,将“要标记”的点数组分开使用

    C = setdiff(A,B)
    

    或者
    B) 在某个条件下用计数器 i 绘制 for 循环中的每个点

    %not tested solution    
    c1 = '.r' %red point, if they are near they seems a line
    c2 = '*b' %blue marker
    if (marker_condition == true)
       plot(x(i), y(i), c2)
    else
       plot(x(i), y(i), c1)
    end
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2017-09-20
      • 2023-03-07
      • 2012-06-28
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2015-02-09
      相关资源
      最近更新 更多