【科研可视化】这张“雷达图”,让模型性能一眼看透!
🧠 当机器学习遇上可视化:一张图看懂模型性能大比拼!
「模型选得好,论文少不了!」——来自科研人的真实心声。
最近在看一篇研究时,被作者的这张图狠狠吸引了👇
📊 图 | 不同机器学习模型在海洋反演任务中的性能对比(雷达图)
这是一张看似花里胡哨、实则信息量巨大的模型性能雷达图。
每个扇形代表一种机器学习模型(如 RF、SVM、LSTM、CNN、XGB、LGB 等),不同颜色代表不同特征组合或实验设置,半径的长度则代表模型性能指标(如 RMSE、MAE、R² 等)。
🚀 一眼看出模型优劣!
从这张图中,科研人可以瞬间看出:
- 哪类模型更稳定? —— 柱形分布越均匀,模型越稳健;
- 哪种算法最敏感? —— 某一方向突出,说明模型在特定特征下表现更好;
- 谁是过拟合狂魔? —— 某些模型在训练集表现亮眼,但在其他方案下性能骤降;
- 融合特征是否有效? —— 不同配色的性能差异,直接揭示多源信息融合的收益。
简而言之,这是一种科研可视化的“战力图”,帮助你从多模型、多场景中快速定位最佳算法。
🌊 它能用在哪些研究?
别以为这只是花哨的展示图,这类雷达图几乎可以应用在所有基于模型对比的科研方向中👇
💧 1. 遥感反演类研究
用于评估不同机器学习或深度学习算法的反演效果。
例如:反演海洋有效波高(SWH)、风速(WS)、土壤湿度(SM)、蒸散发(ET)、植被水分含量(VWC)等诸多回归预测中。
📈 2. 时序预测类研究
适用于气象、水文、环境、能源等时序预测任务中,展示 LSTM、CNN、Transformer 等网络性能。
🧩 3. 多源数据融合类研究
当你引入 NDVI、降水、温度、风场等多种环境因子后,一张雷达图能清晰展示模型性能的改进程度。
💡 为什么这图能“出圈”?
因为它既美观又高效传达信息。 相比于传统柱状图或折线图,雷达图能让数据“活”起来。它把复杂的多维性能指标用视觉化的方式立体展开,让科研成果更有“科技感”和说服力。
在论文、汇报或公众号推文中使用这样的图表,可以:
- ✅ 降低审稿人或观众的理解门槛;
- ✅ 提升研究的直观表达力;
- ✅ 增强论文的视觉冲击感。
一句话:
一张好的可视化,不只是“锦上添花”,而是“降维打击”。
🧮 想自己做?方法来了!
📍 MATLAB实现:
%% 清空环境
close all;clear all;clc;
%% 数据
data = [0.324 0.315 0.305 0.301 0.297 ...
0.292 0.288 0.283 0.279 0.276 ...
0.327 0.318 0.310 0.309 0.307 ...
0.302 0.298 0.294 0.289 0.286]; % 示例20个数据
labels = {'LR','RF','SVM','ELM','LSTM','CNN','XGB_a','LGB_a','LR_a','RF',...
'SVM','ELM','LSTM','CNN','XGB_a','LGB_a','LR_a','RF','SVM','ELM'};
N = length(data); % 柱子数量
theta = linspace(0,2*pi,N+1); % 每个柱子的角度
theta(end) = []; % 去掉重复点
barWidth = 2*pi/N * 0.8; % 每个柱子的宽度(留点空隙)
%% 分组颜色 (红=陕北, 蓝=关中, 绿=陕南)
colors = zeros(N,3);
colors(1:7,:) = repmat([0.8 0.2 0.2],7,1); % 红色
colors(8:13,:) = repmat([0.2 0.4 0.8],6,1); % 蓝色
colors(14:20,:) = repmat([0.2 0.7 0.5],7,1); % 绿色
colors(14:20,:) = repmat([0.6 0.2 0.8],7,1); % 紫色
colors(14:20,:) = repmat([1.0 0.65 0.0],7,1); % 橙色
%% 绘图
figure('Color','w'); hold on; axis equal; axis off; % 白底,去掉坐标轴
%% 定义字体和字号大小-通常的SCI一般Arial字体和10字号通用
fontnamed = 'Arial'; % 字号名字Arial
ssize = 10; % 字号大小
Rmax = max(data)+0.1; % 半径最大值
for i = 1:N
% 每个柱子的角度范围
t1 = theta(i) - barWidth/2;
t2 = theta(i) + barWidth/2;
tt = [t1 t2];
% 外圈坐标
[x_outer,y_outer] = pol2cart(tt,[data(i) data(i)]);
% 内圈坐标(圆心为0,0)
[x_inner,y_inner] = pol2cart(fliplr(tt),[0 0]);
% 合并坐标,形成矩形柱子
x = [x_outer x_inner];
y = [y_outer y_inner];
% 填充颜色
patch(x,y,colors(i,:),'EdgeColor','none');
% 数值标注
[xv,yv] = pol2cart(theta(i), data(i)+0.02);
text(xv,yv, num2str(data(i),'%.3f'), 'HorizontalAlignment','center');
% 外圈标签
[xlab,ylab] = pol2cart(theta(i), Rmax+0.03);
text(xlab,ylab, labels{i}, 'HorizontalAlignment','center');
end
%% 添加圆环刻度线
radii = 0.2:0.1:Rmax; % 内圈刻度
th = linspace(0,2*pi,400);
for r = radii
if abs(r-Rmax) < 1e-6
% 最外圈实线
plot(cos(th)*r, sin(th)*r,'k-','LineWidth',1);
else
% 内圈虚线
plot(cos(th)*r, sin(th)*r,'k:','LineWidth',0.5);
end
end
%% 添加径向分割线(虚线)
for i = 1:N
[x_line,y_line] = pol2cart([theta(i) theta(i)], [0 Rmax]);
plot(x_line,y_line,'k:','LineWidth',0.5);
end
%% 添加半径刻度数值(放在右侧 0°方向)
% for r = radii
% text(r+0.02, 0, num2str(r,'%.2f'), 'FontSize',8, ...
% 'HorizontalAlignment','left','VerticalAlignment','middle');
% end
%% 添加图例
% plot(nan,nan,'Color',[0.8 0.2 0.2],'LineWidth',6); % 红色
% plot(nan,nan,'Color',[0.2 0.4 0.8],'LineWidth',6); % 蓝色
% plot(nan,nan,'Color',[0.2 0.7 0.5],'LineWidth',6); % 绿色
% legend({'陕北','关中','陕南'},'Location','southoutside','Orientation','horizontal');
%% 背景颜色
set(gcf,'Color',[1 1 1])
%% 设置完毕后,按照所需分辨率、格式输出
fileout = 'demo5_R';
print([fileout,'.png'],'-r800','-dpng');
配色要亮眼,字体要简洁,指标要归一化,这样你的图既能发论文,又能做汇报,还能当封面用!
✨ 最后一句话
科研数据可视化,从不是“学术美术”,
它是科研思维的延伸。
当机器学习遇上这张雷达图,不仅展示了模型的性能,更展示了科研表达的新境界。
让你的论文和汇报,不止有结果,更有故事。