Matlab 将图例添加到一组线中
我必须绘制一组线条(总共10条,分为2组,每组5条),但我只想为这些组绘制图例 这似乎很容易,我在这里遵循了公认的答案: 这对我来说很有意义,但当我执行它时,我会得到一个错误: | |和&&运算符的操作数 必须可转换为逻辑标量值。 图例中的错误(第198行) elseif narg>0&& ~ischar(varargin{1})和& 这是代码,我不知道是否是因为“eval”命令,但我得到了绘图Matlab 将图例添加到一组线中,matlab,plot,Matlab,Plot,我必须绘制一组线条(总共10条,分为2组,每组5条),但我只想为这些组绘制图例 这似乎很容易,我在这里遵循了公认的答案: 这对我来说很有意义,但当我执行它时,我会得到一个错误: | |和&&运算符的操作数 必须可转换为逻辑标量值。 图例中的错误(第198行) elseif narg>0&& ~ischar(varargin{1})和& 这是代码,我不知道是否是因为“eval”命令,但我得到了绘图 figure(3) h1=plot(res(:,17),(res(:,16)./10^6),prop
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'});
似乎是您的
h2
列向量,您正试图与h1
连接,就好像它是一个行向量一样
尝试使用
图例([h1;h2],…
或图例([h1,h2'],…
无法通过绘图
功能声明一组线列
。您可以通过连接值并在它们之间插入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');
plot
的结果是一个向量,它包含绘制的每一行序列的一个条目。在您的例子中,h1
是5x1
,h2
是ngrains x1
。您应该做图例([h1(1)h2(1)],{'label1','label2'});
。这将只为每组的第一行序列分配一个图例条目。呃,不要像这样使用eval
。将您的数据存储在一个中并利用。或者使用一个在我写我的文章时没有看到您的文章的。我觉得为选定的行序列创建图例条目比混乱数据要好。不过,这是一个不错的技巧。@Mad物理学家我同意只注释一些具有代表性的LineSeries
更干净、更灵活。唯一的问题(我个人在通过.fig
文件交换数据时面临的问题——相信我,这种情况会发生:-D)正在从LineSeries
属性(如Color
、LineStyle
、LineWidth
等)重建组。相比之下,很容易获得整个组的数据,并围绕NaN
进行拆分。