如何在给定位置绘制圆?

问题描述

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

plot

我通过以下代码实现了这一点:

data = mzcdfread('sample1.cdf');

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

其中

locs返回每个峰顶部的x值,而pks返回每个峰的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()内置函数和'Marker'选项来绘制圆圈:

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

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


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

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

figure;
plot(data.ordinate_values);
hold on;
plot(locs,14);