2015-06-22 2 views
0

У меня есть вопрос относительно легенды для фильмов. Это мой код:matlab как фильм с легендой

fig = figure(); 
for i = 1: 70000 
plot(signal1) 
hold on; 
plot([i,i],[-5,5]) 
plot(signal2,'r') 
hold off; 
title('\fontsize{14} my data'); 
legend('signal1','signal2'); 
axis tight; 
f(i) = getframe(fig); 
end 

Легенда показывает те же цвета для первых двух вещей, которые я сюжет. если я заработаю больше, он будет работать на других участках. Есть трюк, который я не знаю?

ответ

0

Строки, определенные в команде legend, назначаются в порядке формирования графиков. Это означает, что ваша первая строка 'signal1' присвоена графику для signal1, а вторая строка 'signal2' назначена вертикальной линии.

У вас есть две возможности исправить эту проблему.

  1. Выполнение plot для вертикальной линии после графика для двух сигналов.
  2. Используйте ручки для участков, чтобы назначать легенды напрямую.

Вот пример изменения порядка:

plot(signal1) 
hold on; 
plot(signal2,'r') 
plot([i,i],[-5,5],'k') 
hold off; 
legend('signal1','signal2'); 

Вот пример, который использует ручки (sp1 и sp2):

sp1 = plot(signal1) 
hold on; 
plot([i,i],[-5,5],'k') 
sp2 = plot(signal2,'r') 
hold off; 
title('\fontsize{14} my data'); 
legend([sp1,sp2],'signal1','signal2'); 
+0

спасибо. Только одна линия в другом месте и все работает :) – ele

+0

Да, это так. Если вы хотите быть независимыми от позиции, используйте второй подход. Это особенно рекомендуется, если на графике больше кривых, чем записи легенды. – Matt