错误条 Matlab 中的图例错误
Legend Error In Errorbars Matlab
legend(errorbars, {'5-15 Percent Exiting Agents', '25-35 Percent Exiting Agents','55-65 Percent Exiting Agents','x','y','z'},'Location','NorthWest');
报错:
使用图例时出错(第 120 行)
无效的论点。键入 'help legend' 以获取更多信息。
>> errorbars
errorbars =
0.0011 0.0012 1.0012 2.0012 3.0012 4.0012
我不知道为什么会出现这个错误。因为它有 6 个标签用于 6 个错误栏!
此外,发布完整代码:
for k=1:2, %x-axis variables
for i=1:size(StringDes,2), %y-axis outputs
errorbar_index=0;
set(gcf, 'units','normalized','outerposition',[0 0 1 1]);
for j=1:3, % two loops for 6 errorbars
for z=1:2,
errorbar_index=errorbar_index+1;
filter2= (pe{z}<upp(j) & pe{z} >lowp(j));
dataset=Descriptors{z}{i};
var= Variables{z}(:,k);
y=dataset(filter2);
x=var(filter2);
if(k==2)
range=rangeValues_ks;
else
range=rangeValues_ke;
end
filter3=(ismember(x,range)) ;
[vals, ~, id] = unique(x(filter3));
m = accumarray(id, y(filter3), [], @mean);
s = accumarray(id, y(filter3), [], @std);
errorbars(errorbar_index)=errorbar(vals,m,s,colors(j), 'LineStyle',linestyle{z},'Marker',marker{z},'LineWidth',linewidth(z));
end
xlabel(StringVar(k));
ylabel(StringDes(i));
hold all;
end
filename=char(strcat(StringDesFileName(i),StringVarFileName(k)));
legend(errorbars, {'5-15 Percent Exiting Agents', '25-35 Percent Exiting Agents','55-65 Percent Exiting Agents','x','y','z'},'Location','NorthWest');
title('');
print(gcf,strcat(parent_folder,'/',filename),'-dpng','-r375' );
close gcf;
end
end
您不能将图例与 ErrorBar
数组(这里是 1x6
数组)中的多个条目相关联。您可以做的是将该图例与创建 ErrorBar
对象的轴相关联。它们确实是轴的 Children
,因此如果您愿意,可以将图例与它们的 Parent
,即轴相关联。
所以您可以做的是将有问题的行更改为:
legend(gca, {'5-15 Percent Exiting Agents', '25-35 Percent Exiting Agents','55-65 Percent Exiting Agents','x','y','z'},'Location','NorthWest');
或者这个:
legend(get(errorbars(1),'Parent'), {'5-15 Percent Exiting Agents', '25-35 Percent Exiting Agents','55-65 Percent Exiting Agents','x','y','z'},'Location','NorthWest');
请注意,如果您在工作会话中只有 1 个活动轴,那么在第一种情况下您可以完全忽略 gca
。
legend(errorbars, {'5-15 Percent Exiting Agents', '25-35 Percent Exiting Agents','55-65 Percent Exiting Agents','x','y','z'},'Location','NorthWest');
报错:
使用图例时出错(第 120 行) 无效的论点。键入 'help legend' 以获取更多信息。
>> errorbars
errorbars =
0.0011 0.0012 1.0012 2.0012 3.0012 4.0012
我不知道为什么会出现这个错误。因为它有 6 个标签用于 6 个错误栏!
此外,发布完整代码:
for k=1:2, %x-axis variables
for i=1:size(StringDes,2), %y-axis outputs
errorbar_index=0;
set(gcf, 'units','normalized','outerposition',[0 0 1 1]);
for j=1:3, % two loops for 6 errorbars
for z=1:2,
errorbar_index=errorbar_index+1;
filter2= (pe{z}<upp(j) & pe{z} >lowp(j));
dataset=Descriptors{z}{i};
var= Variables{z}(:,k);
y=dataset(filter2);
x=var(filter2);
if(k==2)
range=rangeValues_ks;
else
range=rangeValues_ke;
end
filter3=(ismember(x,range)) ;
[vals, ~, id] = unique(x(filter3));
m = accumarray(id, y(filter3), [], @mean);
s = accumarray(id, y(filter3), [], @std);
errorbars(errorbar_index)=errorbar(vals,m,s,colors(j), 'LineStyle',linestyle{z},'Marker',marker{z},'LineWidth',linewidth(z));
end
xlabel(StringVar(k));
ylabel(StringDes(i));
hold all;
end
filename=char(strcat(StringDesFileName(i),StringVarFileName(k)));
legend(errorbars, {'5-15 Percent Exiting Agents', '25-35 Percent Exiting Agents','55-65 Percent Exiting Agents','x','y','z'},'Location','NorthWest');
title('');
print(gcf,strcat(parent_folder,'/',filename),'-dpng','-r375' );
close gcf;
end
end
您不能将图例与 ErrorBar
数组(这里是 1x6
数组)中的多个条目相关联。您可以做的是将该图例与创建 ErrorBar
对象的轴相关联。它们确实是轴的 Children
,因此如果您愿意,可以将图例与它们的 Parent
,即轴相关联。
所以您可以做的是将有问题的行更改为:
legend(gca, {'5-15 Percent Exiting Agents', '25-35 Percent Exiting Agents','55-65 Percent Exiting Agents','x','y','z'},'Location','NorthWest');
或者这个:
legend(get(errorbars(1),'Parent'), {'5-15 Percent Exiting Agents', '25-35 Percent Exiting Agents','55-65 Percent Exiting Agents','x','y','z'},'Location','NorthWest');
请注意,如果您在工作会话中只有 1 个活动轴,那么在第一种情况下您可以完全忽略 gca
。