2014-02-18 4 views
1

У меня есть 10 кривых в сюжете, но только три из них должны появиться в легенде. Например, среди 10 кривых, только первая, пятая и десятая должны быть в легенде, как я могу это сделать?Легенда, содержащая только конкретные сюжеты

Вот моя программа:

x=1:0.5:15; 
y1=x.^1 
plot(x,y1) 
hold on 
y2=x.^1.2 
plot(x,y2) 
hold on 
. 
. 
. 
y10=x.^2.2 
plot(x,y10) 
+0

Вы имеете в виду подзаговоры? Все 10 на одной фигуре? – Dan

ответ

8

Вы можете использовать ручки для участков, а затем указать участки для легенды их ручки:

x=1:0.5:15; 
y(1,:)=x.^1; 
y(2,:)=x.^1.2; 
... 
... 
... 
y(10,:)=x.^2.2; 

for k=1:10 
    h(k)=plot(x,y(k,:)); 
    hold on 
end 
legend([h(1) h(5) h(10)],'curve 1','curve 5','curve 10'); 
hold off 
0

Команда legend относится только к последней версии созданного сюжета, если не передается дескриптор.

figure 
for c=1:10 
    subplot(4,4,c) 
    ezplot('y=sin(x)'); 
    if c==5||c==10 
     legend('sin(x)') 
    end 
end 
+0

извините, у меня есть 10 кривых в сюжете – user3271929

1

вам нужно использовать участок ручку в функции легенды, чтобы указать желаемые кривые , Поставлен в вашем коде будет выглядеть следующим образом:

x=1:0.5:15; 
y1=x.^1; 
h1=plot(x,y1,'r'); 
hold on 
y2=x.^1.2; 
h2=plot(x,y2,'c'); 
hold on 
. 
. 
. 
y10=x.^2.2; 
h10=plot(x,y10,'p'); 


hold off; 

legend([h2,h10] , 'Fart 2', 'More Fart'); % Plot in the handle you wish 
+0

это не работает, это просто показывает легенду для последнего – user3271929

+0

Мой плохой, только один 'legend()' call, он работает сейчас. – McMa

+1

один 'держать' достаточно. Кроме того, 'hold all' будет автоматически циклически проходить через' ColorOrder'. – scenia

1

legend может взять ручку или ручки, и список строк. Я взял на себя смелость переписать свой код, чтобы он занимался циклом, а не создавал пучок из y переменных. Вообще говоря, если вы обнаружите, что создаете серию переменных с именами y1, y2 и т. Д., Лучше всего это сделать в MATLAB.

Существует 7 участков, а не 10, но вы получаете идею.

x=1:0.5:15; 
m=1:0.2:2.2; 

figure 
hold on 

for n = 1:7 
    h(n) = plot(x,x.^m(n)); 
end 

legend(h([1,3,5]),'Plot One', 'Plot Three', 'Plot Five',... 
'Location', 'NorthWest') 

enter image description here

0

Вот пятно два лайнера, которые я использую:

a=flipud(findall(gcf,'Type','Line')); %get all line objects of current plot 
legend(a([1 3]),{'a','b'}) %add legend for line 1 and 3, 'a' and 'b' 
Смежные вопросы