【发布时间】:2016-10-30 09:01:40
【问题描述】:
这个问题很基础,但我正在寻找最好的方法。 对于matlab中绘制的线,如何标记线上的几个点。我知道可以直接使用标记进行绘图。但是,如果线已经被绘制并且标记只是为了区分图。而不是选择几个点并第二次绘制。下图是一个例子
【问题讨论】:
标签: matlab plot matlab-figure
这个问题很基础,但我正在寻找最好的方法。 对于matlab中绘制的线,如何标记线上的几个点。我知道可以直接使用标记进行绘图。但是,如果线已经被绘制并且标记只是为了区分图。而不是选择几个点并第二次绘制。下图是一个例子
【问题讨论】:
标签: matlab plot matlab-figure
在创建初始图之后,您可以使用命令“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'...
【讨论】:
如果您不想在第二个时刻“添加”标记点(但我认为您不会有一些优势),请考虑
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
【讨论】: