2015-12-13 43 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

每畦两件事情,所以返回的句柄是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') 
plot通话

enter image description here