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

如何在MATLAB同一figure中同时显示fitlm模型图与系数表?

MATLAB线性模型图与系数表同屏显示解决方案

报错原因

你遇到的报错是MATLAB的组件使用限制:uitable属于App Designer专属的UI组件,只能在UIFigure(App Designer创建的窗口)中使用,无法直接嵌入用figure()创建的普通Figure的subplot里。

需求可以实现,两种可行方案

方案一:在普通Figure中用文本绘制系数表

如果不想用App Designer,可以把系数表转换成文本格式,手动绘制在子图区域,模拟表格效果:

% 1. 构建示例线性模型(替换成你的数据和模型)
load carbig;
mdl = fitlm(Horsepower, MPG);

% 2. 创建Figure并分栏
fig = figure('Position', [100,100,1000,500]);
% 子图1:绘制模型图
subplot(1,2,1);
plot(mdl);
title('线性模型诊断图');

% 子图2:绘制系数表格
subplot(1,2,2);
ax = gca;
ax.Visible = 'off'; % 隐藏默认坐标轴
% 把系数表转为带表头的单元格数组
coeff_data = table2cell(mdl.Coefficients);
coeff_table = [{'参数'}, {'估计值'}, {'标准误差'}, {'t统计量'}, {'p值'}; coeff_data];

row_cnt = size(coeff_table,1);
col_cnt = size(coeff_table,2);

% 计算每个单元格的位置(归一化坐标)
x = linspace(0.1, 0.9, col_cnt);
y = linspace(0.9, 0.1, row_cnt);

% 逐个绘制单元格文本
for i = 1:row_cnt
    for j = 1:col_cnt
        text(x(j), y(i), coeff_table{i,j}, ...
            'HorizontalAlignment','center', ...
            'VerticalAlignment','middle', ...
            'Parent', ax);
    end
end

% 绘制表格边框
annotation(fig, 'rectangle', [0.52, 0.05, 0.45, 0.9], 'Color','k');
% 绘制竖线分隔列
for j = 1:col_cnt-1
    line_x = 0.52 + 0.45*(x(j)+x(j+1))/2;
    annotation(fig, 'line', [line_x, line_x], [0.05, 0.95], 'Color','k');
end
% 绘制横线分隔行
for i = 1:row_cnt-1
    line_y = 0.05 + 0.9*(y(i)+y(i+1))/2;
    annotation(fig, 'line', [0.52, 0.97], [line_y, line_y], 'Color','k');
end
title(ax, '模型系数表');

方案二:用App Designer创建UIFigure(更规范)

如果接受用App Designer,这是最适配的方式:

  1. 打开App Designer,新建一个空白App
  2. 在画布上添加一个UIAxes(用于显示模型图)和一个UITable(用于显示系数表),调整布局为左右分栏
  3. 在startupFcn回调中添加代码:
function startupFcn(app)
    % 替换成你的模型构建代码
    load carbig;
    mdl = fitlm(Horsepower, MPG);
    
    % 在UIAxes中绘制模型图
    plot(app.UIAxes, mdl);
    app.UIAxes.Title.String = '线性模型诊断图';
    
    % 在UITable中加载系数表
    app.UITable.Data = mdl.Coefficients;
    % 可选:设置表格列宽自适应
    app.UITable.ColumnWidth = {'auto'};
end

运行App后,就能在同一个窗口中同时看到模型图和系数表。

总结

普通Figure确实无法嵌入uitable,这是MATLAB的组件架构限制,但通过上述两种方法,完全可以实现把模型图和系数表同屏显示的需求。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.02 09:30:29