【问题标题】:How to draw circles in given places?如何在给定的地方画圆圈?
【发布时间】:2020-10-17 13:11:43
【问题描述】:

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

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

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 文档中查找 hold on
  • 您还需要隐藏第二个情节的线条,例如plot(locs, pks, 'o').
  • Cris Luengo 是对的,只包含部分答案是我的错。你也应该使用hold on。我正在下面编辑我的答案。

标签: matlab plot drawing matlab-figure draw


【解决方案1】:

您应该使用 Matlab 的常规 plot() 内置函数和 '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);

【讨论】:

    猜你喜欢
    • 2014-11-08
    • 2012-11-12
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-01-25
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多