Выберите, какая линия наиболее вперед в сюжете - PullRequest
1 голос
/ 03 апреля 2019

Я пытаюсь представить некоторые результаты эксперимента.У меня около 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)

Однако я пытаюсь понять, есть ли какой-то более разумный путь.

Спасибо

1 Ответ

0 голосов
/ 03 апреля 2019

Согласно этому ответу , вы можете переместить линию вперед, используя функцию 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
...