将图例添加到一组线条

时间:2015-12-14 12:11:59

标签: matlab plot

我必须绘制一组线(总共10行,分为2组,每组5个),但我只想为这些组添加图例。

这似乎很容易,我按照接受的答案:legend for group of lines

这对我来说很有意义,但是当我执行它时,我收到一个错误:

  

操作数到||和&&运营商    必须可转换为逻辑标量值。             图例中的错误(第198行)              elseif narg> 0&&              ~ischar(varargin {1})&& ...

这是代码,我不知道是不是因为“eval”命令,但我得到的情节......

figure(3)
h1=plot(res(:,17),(res(:,16)./10^6),prop,...
res(:,64),(res(:,92)./10^6),prop,...
res(:,65),(res(:,93)./10^6),prop,...
res(:,66),(res(:,94)./10^6),prop,...
res(:,67),(res(:,95)./10^6),prop,...
'linewidth',2);
hold on
for ii=1:ngrains
      eval(['h2(',num2str(ii),',1)=plot(',names{ii},'.VMSTRAIN,',names{ii},'.VMSTRESS,prop2,''linewidth'',2)']);
hold on

plot

以下是我用来添加图例的代码:

   legend([h1 h2],{'label1', 'label2'});

3 个答案:

答案 0 :(得分:3)

无法通过LineSeries函数声明一组plot。你可以做的是"假"分组,通过连接值并在它们之间插入NaN以便打破这些行:

%// Build some data
t  = transpose(0:0.001:pi);
x1 = sin(t);
x2 = sin(t + pi/6);
y1 = cos(t);
y2 = cos(t + pi/6);

%// Aggregate data for plotting
TX = [ t; NaN;  t];
 X = [x1; NaN; x2];
TY = [ t; NaN;  t];
 Y = [y1; NaN; y2];

%// Do the plotting
plot(   TX, X, '--b',  TY, Y, '-r');
legend('dotted blue',   'full red');

请注意,您无法单独处理LineSeries的可见性(或其他属性值),因为"组"中没有实际分隔的LineSeries

稍后修改

如果您想使用仅注释共享相同样式的组中的第一个LineSeries的技巧,也许您应该写:

 legend([h1(1), h2(1)], 'string1', 'string2');

答案 1 :(得分:0)

plot的结果是一个向量,其中包含绘制的每个线系列的一个条目。在您的情况下,h15 x 1h2ngrains x 1。你应该做legend([h1(1) h2(1)], {'label1', 'label2'});。这会将图例条目仅分配给每个组的第一个系列。

答案 2 :(得分:-1)

您的h2列向量似乎正在尝试与h1连接,就像它是行向量一样。

尝试legend([h1;h2], ...legend([h1, h2'],...