如何在给定的地方画圆圈?

How to draw circles in given places?

我想在下图中每个峰的顶部绘制一个圆形标记:

我用下面的代码实现了这个:

data = mzcdfread('sample1.cdf');

[pks,locs,w,p] = findpeaks(data.ordinate_values)
plot(data.ordinate_values)

哪里

locs returns 每个峰顶部的 x 值和 pks returns 每个峰的 y 值。 locspks 的示例如下:

pks =

  10×1 single column vector

    0.6649
    0.7314
    0.7536
    1.3797
    0.2394
    0.4322
    0.2090
    0.5402
    0.6797
    0.3059

locs =

        1199
        2399
        3599
        4799
        5999
        7199
        8399
        9599
       10799
       11999

这是我试图在每个峰的顶部画一个圆形标记,但它不起作用:

% r as radius
r = 0.2
ang=0:0.01:2*pi; 
xp=r*cos(ang);
yp=r*sin(ang);

plot(data.ordinate_values, locs+xp, pks+yp)

你应该使用 Matlab 的常规 plot() built-in 函数和 'Marker' 选项来绘制圆:

plot(locs, pks, 'Marker', 'o');

您还可以设置圆形标记的大小和颜色:


plot(locs,pks,...
    'Color', 'r',...
    'Marker', 'o',...
    'MarkerSize', 14);

这意味着 data.ordinate_values 给出的曲线和每个峰值处的圆圈是单独绘制的。因此,您需要在两个绘图命令之间(或初始化图形时)使用 hold on

figure;
plot(data.ordinate_values);
hold on;
plot(locs,pks,...
    'Color', 'r',...
    'Marker', 'o',...
    'MarkerSize', 14);