在Matlab中绘制线条上标记的最佳方法

时间:2016-10-30 09:01:41

标签: matlab plot matlab-figure

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

enter image description here

2 个答案:

答案 0 :(得分: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

结果如下:
evenly spaced markers
如果'线性'不能提供足够好的结果,你可以尝试其他插值方法,如'cubic','spline'......

答案 1 :(得分:0)

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

A)使用两个绘图指令,将点阵列分开,并标记为#34;使用

private void executeSCCE()
{
    // register a handler for each Marker type
    ClassToHandlerMap dispatch = new ClassToHandlerMap();
    dispatch.put(B.class, new B_Handler());
    dispatch.put(C.class, new C_Handler());

    // get a target (e.g., Pair<A,C>)
    Pair<A, ? extends Marker> p1 = getTarget();

    // select handler based on the class type of the second parameter
    captureHelper(p1.second.getClass(), p1, dispatch);
}

可替换地
B)在条件

下用计数器i绘制for循环中的每个点
C = setdiff(A,B)