我必须绘制一组线(总共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
以下是我用来添加图例的代码:
legend([h1 h2],{'label1', 'label2'});
答案 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
的结果是一个向量,其中包含绘制的每个线系列的一个条目。在您的情况下,h1
为5 x 1
,h2
为ngrains x 1
。你应该做legend([h1(1) h2(1)], {'label1', 'label2'});
。这会将图例条目仅分配给每个组的第一个系列。
答案 2 :(得分:-1)
您的h2
列向量似乎正在尝试与h1
连接,就像它是行向量一样。
尝试legend([h1;h2], ...
或legend([h1, h2'],...