在剧情中选择最前方的哪一行

问题描述 投票:1回答:1

我试图从实验中得出一些结果。我有大约50行,我喜欢其中一行更宽,并显示在顶部。

代码如下:

figure(1)
hold on
plot(Time,Delta(:,2),'red','linewidth',2)
for k = 1:i-1
    if k == Index    
        plot(Time,Delta_PWM{1,k},'color','black','linewidth',2)
    else
        plot(Time,Delta_PWM{1,k},'color',[160 160 160]/255)
    end
end

我喜欢在k == Index的情节不仅要更宽,而且还要显示在其他线以上,因为到目前为止我得到以下内容:

enter image description here

我试图获得的是黑线高于所有灰线。

我设法解决了这个问题:

figure(1)
hold on
plot(Time,Delta(:,2),'red','linewidth',2)
for k = 1:i-1
    if k ~= Index    
        plot(Time,Delta_PWM{1,k},'color',[160 160 160]/255)
    end
end
plot(Time,Delta_PWM{1,Index},'color','k','linewidth',2)

但是,我试图了解是否有一些更聪明的方式。

谢谢

matlab plot figure
1个回答
0
投票

根据this answer,你可以使用函数uistack将一条线移到前面。但是您也可以通过将行句柄存储在数组中并修改相应的代码来从程序中删除if和重复的代码:

figure
hold on
N = size(Delta_PWM,2);
h = gobjects(1,N);      % Pre-allocate an array of handles
for k = 1:N
    h(k) = plot(Time,Delta_PWM{1,k},'color',[160 160 160]/255)
end
uistack(h(Index),'top');                       % Move line to the front
set(h(Index),'Color','Black','LineWidth',2);   % Change its properties
© www.soinside.com 2019 - 2024. All rights reserved.