箱线图(`boxchart`)

箱线图(boxchart)

03_统计与矩阵 5 张 MATLAB R2023b 100 mm 宽 @ 300 dpi

这个方法适合什么

五数概括加离群点,多组并排比较离散度。适合:四季负荷率、各方案线损率、各馈线电流、各绝缘等级温升。

电气场景

1 四季负荷率箱线

2 各方案线损率箱线

3 各馈线电流箱线

4 各台区三相电压不平衡度箱线

5 各绝缘等级温升箱线

代码

脚本 p3_stats_matrix.m 中对应 boxchart 的一段,SEL 用于选择只跑某几个方法。

if any(SEL==3)
    rng(303);

    % ---- 3.1 四季负荷率 ----
    nm = {'春季','夏季','秋季','冬季'};
    mu = [0.72 0.88 0.75 0.83];
    N  = 80;
    x  = repelem((1:4)',N);
    y  = zeros(4*N,1);
    for k = 1:4
        y((k-1)*N+(1:N)) = mu(k) + 0.075*randn(N,1) + 0.05*randn(N,1);
    end
    f  = ml_fig(PP,100,80);
    ax = axes('Parent',f,'Position',[0.175 0.245 0.770 0.700]);
    bx = boxchart(ax,x,y,'BoxFaceColor',C(1,:),'MarkerStyle','o','MarkerSize',3);
    set(bx,'BoxMedianLineColor',[0.15 0.15 0.15]);
    set(ax,'XTick',1:4,'XTickLabel',ml_tx(nm));
    xlabel(ml_tx('季节'));
    ylabel(ml_tx('负荷率 <i>K</i>_{L} / p.u.'));
    xlim(ax,[0.4 4.6]); ylim(ax,[0.50 1.04]);
    xl = ax.XLabel; xl.Units = 'normalized'; xl.Position(2) = -0.175;
    save_png(f,FIGD,'四季负荷率箱线');

    % ---- 3.2 各降损方案线损率 ----
    nm = {'现状','换导线','增容改造','无功补偿','综合改造'};
    mu = [3.42 2.86 2.55 2.31 1.94];
    N  = 60;
    x  = repelem((1:5)',N);
    y  = zeros(5*N,1);
    for k = 1:5
        y((k-1)*N+(1:N)) = mu(k) + 0.18*randn(N,1);
    end
    f  = ml_fig(PP,100,80);
    ax = axes('Parent',f,'Position',[0.175 0.245 0.770 0.700]);
    bx = boxchart(ax,x,y,'BoxFaceColor',C(3,:),'MarkerStyle','o','MarkerSize',3);
    set(bx,'BoxMedianLineColor',[0.15 0.15 0.15]);
    set(ax,'XTick',1:5,'XTickLabel',ml_tx(nm),'XTickLabelRotation',0);
    xlabel(ml_tx('降损方案'));
    ylabel(ml_tx('线损率 Δ<i>P</i> / %'));
    xlim(ax,[0.4 5.6]); ylim(ax,[0.6 4.3]);
    xl = ax.XLabel; xl.Units = 'normalized'; xl.Position(2) = -0.175;
    save_png(f,FIGD,'各方案线损率箱线');

    % ---- 3.3 各馈线日最大电流 ----
    nm = {'F1','F2','F3','F4','F5','F6'};
    mu = [268 342 215 398 286 176];
    N  = 45;
    x  = repelem((1:6)',N);
    y  = zeros(6*N,1);
    for k = 1:6
        y((k-1)*N+(1:N)) = mu(k)*(1 + 0.09*randn(N,1));
    end
    f  = ml_fig(PP,100,80);
    ax = axes('Parent',f,'Position',[0.175 0.245 0.770 0.700]);
    bx = boxchart(ax,x,y,'BoxFaceColor',C(5,:),'MarkerStyle','o','MarkerSize',3);
    set(bx,'BoxMedianLineColor',[0.15 0.15 0.15]);
    set(ax,'XTick',1:6,'XTickLabel',ml_tx(nm));
    xlabel(ml_tx('馈线编号'));
    ylabel(ml_tx('日最大电流 <i>I</i>_{max} / A'));
    xlim(ax,[0.4 6.6]); ylim(ax,[120 480]);
    xl = ax.XLabel; xl.Units = 'normalized'; xl.Position(2) = -0.175;
    save_png(f,FIGD,'各馈线电流箱线');

    % ---- 3.4 各台区三相电压不平衡度(分组)----
    nmT = {'1 号台区','2 号台区','3 号台区','4 号台区'};
    nmP = {'A 相','B 相','C 相'};
    base = [1.85 2.35 1.52 2.72];
    N = 50; x = []; y = []; g = strings(0,1);
    for k = 1:4
        for p = 1:3
            x = [x; k*ones(N,1)];                                  %#ok<AGROW>
            y = [y; base(k)*(1 + 0.10*(p-1)) + 0.30*randn(N,1)];    %#ok<AGROW>
            g = [g; repmat(nmP{p},N,1)];                            %#ok<AGROW>
        end
    end
    f  = ml_fig(PP,100,80);
    ax = axes('Parent',f,'Position',[0.175 0.245 0.770 0.700]);
    boxchart(ax,x,y,'GroupByColor',categorical(g));
    set(ax,'XTick',1:4,'XTickLabel',ml_tx(nmT),'XTickLabelRotation',0);
    xlabel(ml_tx('配变台区'));
    ylabel(ml_tx('三相电压不平衡度 \epsilon_{U} / %'));
    xlim(ax,[0.4 4.6]); ylim(ax,[0 4.5]);
    lg = legend(ax,ml_tx(nmP),'Location','northeast','Orientation','horizontal');
    ml_style_legend(lg,PP);
    xl = ax.XLabel; xl.Units = 'normalized'; xl.Position(2) = -0.175;
    save_png(f,FIGD,'各台区三相电压不平衡度箱线');

    % ---- 3.5 各绝缘等级温升(半载/满载分组)----
    nmG = {'A 级','E 级','B 级','F 级','H 级'};
    nmL = {'半载','满载'};
    muG = [58 66 74 88 102];
    N = 40; x = []; y = []; g = strings(0,1);
    for k = 1:5
        for i = 1:2
            x = [x; k*ones(N,1)];                                        %#ok<AGROW>
            y = [y; muG(k)*(0.82 + 0.18*i) + 3.2*randn(N,1)];            %#ok<AGROW>
            g = [g; repmat(nmL{i},N,1)];                                 %#ok<AGROW>
        end
    end
    f  = ml_fig(PP,100,80);
    ax = axes('Parent',f,'Position',[0.175 0.245 0.770 0.700]);
    boxchart(ax,x,y,'GroupByColor',categorical(g));
    set(ax,'XTick',1:5,'XTickLabel',ml_tx(nmG),'XTickLabelRotation',0);
    xlabel(ml_tx('绝缘耐热等级'));
    ylabel(ml_tx('绕组温升 Δ<i>T</i> / K'));
    xlim(ax,[0.4 5.6]); ylim(ax,[35 130]);
    lg = legend(ax,ml_tx(nmL),'Location','northeast','Orientation','horizontal');
    ml_style_legend(lg,PP);
    xl = ax.XLabel; xl.Units = 'normalized'; xl.Position(2) = -0.175;
    save_png(f,FIGD,'各绝缘等级温升箱线');
end
posted @ 2026-11-09 00:05  小青蛙电气  阅读(3)  评论(0)    收藏  举报