我试图从实验中得出一些结果。我有大约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)
但是,我试图了解是否有一些更聪明的方式。
谢谢
根据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