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

如何在Matlab中将不同代码生成的同坐标轴图形合并为单张图

Matlab多图合并解决方案

完全可以通过独立新脚本实现多图合并,不需要修改原有代码,常用有两种实现方案:

方案1:复用原有绘图逻辑(推荐,可维护性最高)

适合你可以直接获取到三组原始绘图代码的场景,不需要生成中间文件:

% 独立合并脚本
% 1. 初始化统一绘图容器
figure
ax = axes;
hold(ax, 'on');
% 填入你原图形的统一坐标轴参数
xlim(ax, [0 10]); % 替换为你的实际参数
ylim(ax, [-5 5]); % 替换为你的实际参数
xlabel(ax, 'X轴标签');
ylabel(ax, 'Y轴标签');
grid(ax, 'on');

% 2. 依次调用三组原始代码的绘图逻辑,指定在公共坐标轴绘图
% 把原代码里的绘图命令前缀加当前ax参数即可,比如原plot(x1,y1)改成下面的写法
plot(ax, x1, y1, 'r-', 'LineWidth', 1.5, 'DisplayName','第一组数据');
plot(ax, x2, y2, 'b--', 'LineWidth', 1.5, 'DisplayName','第二组数据');
plot(ax, x3, y3, 'g-.', 'LineWidth', 1.5, 'DisplayName','第三组数据');

% 3. 收尾设置
legend(ax, 'show');
hold(ax, 'off');

方案2:读取已保存的.fig文件合并

适合不想修改原始代码、或者原始代码已经丢失,只有已导出的.fig格式图形的场景:

% 独立合并脚本
% 1. 初始化统一绘图容器
new_fig = figure;
new_ax = axes(new_fig);
hold(new_ax, 'on');
% 填入你原图形的统一坐标轴参数
xlim(new_ax, [0 10]); % 替换为你的实际参数
ylim(new_ax, [-5 5]); % 替换为你的实际参数
xlabel(new_ax, 'X轴标签');
ylabel(new_ax, 'Y轴标签');
grid(new_ax, 'on');

% 2. 批量读取已有fig文件并复制绘图对象
% 替换为你三个fig的实际存储路径
fig_list = {'第一组图.fig','第二组图.fig','第三组图.fig'};
line_styles = {'r-','b--','g-.'}; % 自定义三组数据的样式避免混淆
for i = 1:length(fig_list)
    % 后台打开旧fig不弹窗
    old_fig = openfig(fig_list{i}, 'invisible');
    % 提取旧fig里的坐标轴对象
    old_ax = findobj(old_fig, 'Type', 'axes');
    old_ax = old_ax(1);
    % 提取所有绘图元素(如果是散点/柱状图,把Type改成scatter/bar即可)
    draw_objs = findobj(old_ax, 'Type', 'line');
    % 复制元素到新画布
    for j = 1:length(draw_objs)
        copyobj(draw_objs(j), new_ax);
        set(draw_objs(j), 'LineStyle', line_styles{i}, 'DisplayName', ['第' num2str(i) '组数据']);
    end
    close(old_fig);
end

% 3. 收尾设置
legend(new_ax, 'show');
hold(new_ax, 'off');

补充说明

两种方案都完全在独立新脚本中运行,不需要修改你原来的三份绘图代码,因为你原图形的坐标轴参数完全一致,合并后不会出现坐标错位的问题。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.07 15:39:04