错误条 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