首页 > 解决方案 > 选择情节中最靠前的线

问题描述

我正在尝试绘制一些实验结果。我有大约 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不仅更宽,而且要显示在其他线条之上,因为到目前为止我得到了以下信息:

在此处输入图像描述

我想要得到的是高于所有灰线的黑线。

我设法通过这样做来解决它:

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)

但是我试图了解是否有更智能的方法。

谢谢

标签: matlabplotfigure

解决方案


根据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

推荐阅读