You need to enable JavaScript to run this app.
最新活动
大模型
产品
解决方案
定价
生态与合作
支持与服务
开发者
了解我们

如何在Matlab高质量绘图代码中添加双Y轴与双图例?

在Matlab高质量绘图中添加双Y轴与双图例

嘿,刚好之前做过不少论文级Matlab绘图的双Y轴需求,用Matlab自带的yyaxis函数就能完美解决,而且完全适配你要的高质量风格。下面一步步给你讲怎么改代码:

1. 分轴绘制数据

首先,你需要用yyaxis leftyyaxis right来分别控制左右两个Y轴,把两组数据分开绘制:

% 先初始化画布(用你原有的高质量设置,比如指定尺寸、分辨率)
figure('Position', [100 100 800 500], 'Color', 'w');
hold on;

% 激活左侧Y轴,绘制第一组数据
yyaxis left
plot(x_data, y1_data, 'LineWidth', 1.5, 'Color', '#1f77b4', 'DisplayName', '左侧曲线');
% 设置左侧Y轴的标签和刻度样式(和你原代码的风格保持一致)
ylabel('左侧指标名称', 'FontName', 'Arial', 'FontSize', 12);
set(gca, 'FontName', 'Arial', 'FontSize', 10, 'LineWidth', 1, 'TickDir', 'out');

% 激活右侧Y轴,绘制第二组数据
yyaxis right
plot(x_data, y2_data, 'LineWidth', 1.5, 'Color', '#ff7f0e', 'DisplayName', '右侧曲线');
ylabel('右侧指标名称', 'FontName', 'Arial', 'FontSize', 12);
set(gca, 'FontName', 'Arial', 'FontSize', 10, 'LineWidth', 1, 'TickDir', 'out');

2. 生成双图例

因为两组曲线分属不同Y轴,直接调用legend()只会显示当前激活轴的曲线,所以需要把两个轴的曲线对象合并,再生成完整图例:

% 获取左右轴的所有曲线对象
left_lines = findobj(yyaxis left, 'Type', 'Line');
right_lines = findobj(yyaxis right, 'Type', 'Line');

% 合并对象并设置图例,保持你的高质量字体设置
legend([left_lines; right_lines], {'第一组数据', '第二组数据'}, ...
       'Location', 'upper right', 'FontName', 'Arial', 'FontSize', 10, 'Box', 'off');

3. 适配你现有代码的小技巧

如果你已经有一套固定的论文绘图模板(比如统一的配色、线条粗细、背景),只需要把上面的yyaxis逻辑插入到你的代码流程里:

  • 先做好画布的基础设置(比如分辨率、位置)
  • 分左右轴绘制对应的数据
  • 最后统一调整坐标轴、图例、标题的样式,和你原代码的参数保持一致就行

额外注意点

  • 要是需要单独调整某一侧Y轴的刻度范围,用ylim(yyaxis left, [min_val max_val])就能精准控制
  • 配色尽量选学术圈常用的(比如Matlab的colororder默认配色,或者自己挑低饱和度的颜色),避免太刺眼的色调
  • 如果你的数据是矩阵,直接把y1_datay2_data换成对应的矩阵列/行就OK

这样改完,你就能得到符合论文、报告要求的双Y轴高质量图了,完全保留你原有代码的专业风格~

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

火山引擎 最新活动