You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Matlab环境下stem3柱状图按误差高度着色及曲面图生成技术问询

解决方案:MATLAB 3D柱体着色与误差曲面图生成

嘿,我来帮你搞定这两个MATLAB绘图的需求,直接上实用的解决方案和代码:

1. 为stem3柱体根据误差高度着色

默认的stem3只会用单一颜色绘制柱体,要实现按误差err的高度着色,我们可以通过获取绘图句柄,给每个柱体的线段单独设置颜色,再配合颜色条直观展示误差与颜色的对应关系。

修改后的代码:

x_pred = (Net_Out(1,:))';
y_pred = (Net_Out(2,:))';
x_true = correct_output(:,1);
y_true = correct_output(:,2);
err = sqrt((x_pred - x_true).^2 + (y_pred - y_true).^2);

% 绘制stem3并获取句柄
h = stem3(x_true, y_true, err,'Marker','none', 'LineWidth', 2);

% 将误差值归一化到[0,1],适配颜色映射范围
err_normalized = (err - min(err)) / (max(err) - min(err));

% 为每个柱体线段设置对应颜色
for i = 1:length(h.XData)
    % 这里用jet色图,你可以换成viridis、parula等其他色图
    h(i).Color = colormap(jet(err_normalized(i)));
end

% 添加辅助元素,提升可读性
colorbar;
xlabel('真实X值');
ylabel('真实Y值');
zlabel('欧氏误差');
title('按误差高度着色的3D柱形图');

2. 基于真实值与误差生成曲面图

完全可以生成曲面图!不过要注意:曲面图需要网格化的二维数据,而你的x_true、y_true大概率是散点数据,所以需要先通过插值将散点误差转换为网格化的误差数据,再绘制曲面。

实现代码:

% 沿用之前计算得到的err、x_true、y_true数据

% 生成X-Y平面的网格化坐标(这里设置50x50的网格,可根据需求调整)
[X_grid, Y_grid] = meshgrid(linspace(min(x_true), max(x_true), 50), ...
                            linspace(min(y_true), max(y_true), 50));

% 用三次插值将散点误差映射到网格上(三次插值的曲面更平滑)
Z_grid = griddata(x_true, y_true, err, X_grid, Y_grid, 'cubic');

% 绘制曲面图
figure;
surf(X_grid, Y_grid, Z_grid, 'EdgeColor', 'none');
colormap(viridis); % 推荐的色图,对色盲友好
colorbar;
xlabel('真实X值');
ylabel('真实Y值');
zlabel('欧氏误差');
title('真实坐标与预测误差的曲面分布图');
shading interp; % 开启平滑着色,让曲面过渡更自然

图像描述:

这张曲面图直观呈现了真实X-Y坐标平面上的预测误差分布:

  • 曲面的高度直接对应预测值与真实值之间的欧氏误差,高度越高代表该区域的预测偏差越大
  • 颜色渐变与误差高度同步,冷色调(如深蓝)对应小误差区域,暖色调(如亮黄)对应大误差区域
  • 平滑插值后的曲面清晰展示了误差在X-Y平面上的变化趋势,能快速定位预测效果好/差的坐标区域,帮助分析模型的性能短板

内容的提问来源于stack exchange,提问作者Jaspreet Kaur

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.01 00:57:45