散点矩阵图(`plotmatrix`)
散点矩阵图(plotmatrix)
02_柱与散点 5 张 MATLAB R2023b 100 mm 宽 @ 300 dpi
这个方法适合什么
多个变量两两散点排成矩阵,一次扫完所有相关性。适合:多测点电气量的相关性初筛、特征工程前的变量筛查。
电气场景
1 台区五变量散点矩阵

2 光伏逆变器四变量散点矩阵

3 光伏组件四变量散点矩阵

4 储能电池五变量散点矩阵

5 谐波含有率四变量散点矩阵

代码
脚本 p2_bar_scatter.m 中对应 plotmatrix 的一段,SEL 用于选择只跑某几个方法。
if any(SEL==10)
rng(41);
% ---- 10.1 配电台区五变量 ----
n = 120;
b = 45 + 40*randn(n,1); b = min(max(b,10),98);
ef = 96.8 - 0.012*(b-55).^2/10 + 0.6*randn(n,1);
pf = 0.94 - 0.0012*(b-50).^2/10 + 0.02*randn(n,1);
dT = 18 + 0.42*b + 3*randn(n,1);
th = 2.6 + 0.035*b + 0.6*randn(n,1);
X = [b ef pf dT th];
nm = {'负载率 <i>\beta</i> / %','效率 <i>\epsilon</i> / %', ...
'功率因数 cos<i>\phi</i>','温升 <i>\Delta T</i> / K', ...
'<i>U</i>_{THD} / %'};
f = ml_fig(PP,150,140);
figure(f);
[H,AX,BigAx] = plotmatrix(X);
for i = 1:5, for j = 1:5
set(H(i,j),'Color',C(1,:),'MarkerSize',2.5);
set(AX(i,j),'FontSize',8,'FontName',PP.FontEN);
end, end
for j = 1:5, xlabel(AX(5,j),ml_tx(nm{j})); end
for i = 1:5, ylabel(AX(i,1),ml_tx(nm{i})); end
set(BigAx,'Visible','off');
save_png(f,FIGD,'台区五变量散点矩阵');
% ---- 10.2 光伏逆变器四变量 ----
P = 20 + 80*rand(n,1);
U = 380 + 6*randn(n,1) - 0.02*P;
I = 1000*P./(sqrt(3)*U.*0.96);
fp = 0.97 + 0.012*randn(n,1);
X = [P U I fp];
nm = {'有功 <i>P</i> / kW','电压 <i>U</i> / V','电流 <i>I</i> / A', ...
'功率因数 cos<i>\phi</i>'};
f = ml_fig(PP,120,112);
figure(f);
[H,AX,BigAx] = plotmatrix(X);
for i = 1:4, for j = 1:4
set(H(i,j),'Color',C(2,:),'MarkerSize',2.5);
set(AX(i,j),'FontSize',8,'FontName',PP.FontEN);
end, end
for j = 1:4, xlabel(AX(4,j),ml_tx(nm{j})); end
for i = 1:4, ylabel(AX(i,1),ml_tx(nm{i})); end
set(BigAx,'Visible','off');
save_png(f,FIGD,'光伏逆变器四变量散点矩阵');
% ---- 10.3 光伏组件四变量 ----
G = 50 + 950*rand(n,1);
Tc = 22 + 0.028*G + 3*randn(n,1);
Pw = 0.48*G.*(1-0.0038*(Tc-25))/1000*500;
et = 17.2 - 0.042*(Tc-25) + 0.3*randn(n,1);
X = [G Tc Pw et];
nm = {'辐照度 <i>G</i> / (W/m^{2})','组件温度 <i>T</i> / ℃', ...
'出力 <i>P</i> / kW','效率 <i>\epsilon</i> / %'};
f = ml_fig(PP,138,116);
figure(f);
[H,AX,BigAx] = plotmatrix(X);
for i = 1:4, for j = 1:4
set(H(i,j),'Color',C(6,:),'MarkerSize',2.5);
set(AX(i,j),'FontSize',8,'FontName',PP.FontEN);
end, end
for j = 1:4, xlabel(AX(4,j),ml_tx(nm{j})); end
for i = 1:4, ylabel(AX(i,1),ml_tx(nm{i})); end
set(BigAx,'Visible','off');
save_png(f,FIGD,'光伏组件四变量散点矩阵');
% ---- 10.4 储能电池五变量 ----
soc = 10 + 90*rand(n,1);
pb = 120*sin(2*pi*soc/100) + 10*randn(n,1);
tb = 20 + 0.16*pb + 2*randn(n,1) + 0.06*soc;
soh = 100 - 0.00035*(3000*(100-soc)/90) - 1.2*randn(n,1);
cyc = 3000*(100-soc)/90 + 40*randn(n,1);
X = [soc pb tb soh cyc];
nm = {'SOC / %','功率 <i>P</i> / kW','温度 <i>T</i> / ℃', ...
'SOH / %','循环次数 <i>N</i>'};
f = ml_fig(PP,165,145);
figure(f);
[H,AX,BigAx] = plotmatrix(X);
for i = 1:5, for j = 1:5
set(H(i,j),'Color',C(3,:),'MarkerSize',2.5);
set(AX(i,j),'FontSize',8,'FontName',PP.FontEN);
end, end
for j = 1:5, xlabel(AX(5,j),ml_tx(nm{j})); end
for i = 1:5, ylabel(AX(i,1),ml_tx(nm{i})); end
set(BigAx,'Visible','off');
save_png(f,FIGD,'储能电池五变量散点矩阵');
% ---- 10.5 谐波含有率四变量 ----
h3 = 12 + 8*randn(n,1); h3 = max(h3,2);
h5 = 6.5 + 0.55*h3 + 2.4*randn(n,1);
h7 = 3.2 + 0.32*h3 + 1.5*randn(n,1);
h11 = 1.4 + 0.15*h5 + 0.8*randn(n,1);
X = [h3 h5 h7 h11];
nm = {'<i>I</i>_{3} / %','<i>I</i>_{5} / %','<i>I</i>_{7} / %','<i>I</i>_{11} / %'};
f = ml_fig(PP,120,112);
figure(f);
[H,AX,BigAx] = plotmatrix(X);
for i = 1:4, for j = 1:4
set(H(i,j),'Color',C(4,:),'MarkerSize',2.5);
set(AX(i,j),'FontSize',8,'FontName',PP.FontEN);
end, end
for j = 1:4, xlabel(AX(4,j),ml_tx(nm{j})); end
for i = 1:4, ylabel(AX(i,1),ml_tx(nm{i})); end
set(BigAx,'Visible','off');
save_png(f,FIGD,'谐波含有率四变量散点矩阵');
end
fprintf('\n[完成] 本次运行的函数编号:%s\n', mat2str(SEL));
%% ---------------------- 本地函数 ----------------------
function style_pie3(hp, PP)
%STYLE_PIE3 三维饼图文字:字体 + 沿径向外推,避免压在饼体上
ax = get(hp(1),'Parent');
view(ax,-37.5,20); camzoom(ax,1.12);
tx = findobj(hp,'type','text');
for k = 1:numel(tx)
p = get(tx(k),'Position');
p(1) = p(1)*1.26; p(2) = p(2)*1.26;
set(tx(k),'Position',p,'FontName',PP.FontEN,'FontSize',9);
end
end
function p = save_png(f, FIGD, nm)
%SAVE_PNG 导出 300dpi PNG + 边距自检 + 关图
p = fullfile(FIGD, ['02_柱与散点_' nm '261107.png']);
print(f, p, '-dpng', '-r300');
ml_chkpng(p, 8);
close(f);
end

浙公网安备 33010602011771号