2015-12-13 3 views
0

Я пытаюсь построить некоторые данные следующим образом:Matlab показывают только некоторые элементы легенды

figure(2); 
l = plot(1:50,data_a(:,2),1:50, data_a(:,2), 'b*'); 
set(l,'Color','red'); 

hold on; 
lb = plot(1:50,data_b(:,2),1:50, data_b(:,2), 'b*'); 
set(lb, 'Color', 'blue'); 

hold on; 
lc = plot(1:50,data_c(:,2),1:50, data_c(:,2), 'b*'); 
set(lc, 'Color', 'green'); 

hold on; 
ld = plot(1:50,data_d(:,2),1:50, data_d(:,2), 'b*'); 
set(ld, 'Color', 'cyan'); 

legend([l,lb,lc,ld], 'A', 'B', 'C', 'D'); 

Если я просто использовать

legend('show') 

Это будет также включать пункты, сделанные в тексте() функции, которую я не хочу. Следовательно, почему в последней строке я указываю, что мне нужны только элементы l, lb, lc и ld (графики), которые будут включены в легенду.

Это соответствует инструкциям given on the MathWorks site.

Однако, он возвращает ошибку, как:

Error using legend (line 120) 
Operands to the || and && operators must be convertible to logical scalar values. 

Error in visualizer (line 33) 
legend([l,lb,lc,ld], 'A', 'B', 'C', 'D'); 

Любые советы?

+0

Ваши ручки не являются скаляры. Вы планируете две вещи при каждом вызове 'plot'. – horchler

ответ

1

Каждый из ваших plot звонков построить две вещи, следовательно, ручки возвращаются векторы 2-на-1. Вы можете попробовать это - просто использовать первый элемент каждого вектора ручки:

legend([l(1),lb(1),lc(1),ld(1)], 'A', 'B', 'C', 'D'); 

Однако, я не уверен, почему вы, кажется, черчения одни и те же данные дважды только цвет линии и маркер. Если вы исправите это, ваши ручки будут скалярами, а записи легенды будут выглядеть правильно. Что-то вроде этого, может быть:

figure(2); 
l = plot(1:50, data_a(:,2), 'r-*'); 

hold on; 
lb = plot(1:50, data_b(:,2), 'b-*'); 

hold on; 
lc = plot(1:50, data_c(:,2), 'g-*'); 

hold on; 
ld = plot(1:50, data_d(:,2), 'c-*'); 

legend([l,lb,lc,ld], 'A', 'B', 'C', 'D'); 

Или немного иначе:

figure(2); 
l = plot(1:50, data_a(:,2), 'b*'); 
set(l,'Color','r'); 

hold on; 
lb = plot(1:50, data_b(:,2), 'b*'); 
set(lb,'Color','b'); 

hold on; 
lc = plot(1:50, data_c(:,2), 'b*'); 
set(lc,'Color','g'); 

hold on; 
ld = plot(1:50, data_d(:,2), 'b*'); 
set(ld,'Color','c'); 

legend([l,lb,lc,ld], 'A', 'B', 'C', 'D'); 
0

Ручка не может быть больше, чем скалярное значение. Таким образом, вы не можете назначить сюжет, содержащий больше кривых для дескриптора, и использовать этот дескриптор для установки легенды. Проверьте, что я сделал для «l4» в следующем примере:

x = 1:0.1:10; 
y = sin(x); 
z= cos(x); 
w = y + z; 

l1 = plot(x,y,'bo'); hold on 
l2 = plot(x,z,'bo'); hold on 
l3 = plot(x,w,'bo'); hold on 

l4 = plot(x,y+1,x,z+1,'+'); 


set(l1,'Color','red'); 
set(l2,'Color','blue'); 
set(l3,'Color','green'); 

set(l4,'Color','black'); 

legend([l1,l2,l3, l4(1), l4(2)],'A','B','C','D','E') 

enter image description here

Смежные вопросы