多彩编程 多彩编程MZPH · CODE BLOG
ARTICLE DETAIL

文章详情

深耕前端与后端开发技术的一线实战笔记与踩坑复盘。

MATLAB双轴折线图(含完整代码)

MATLAB双轴折线图(含完整代码) 文章目录概要整体架构流程技术名词解释技术细节小结概要本文提供一套完整可直接运行的 MATLAB双 Y 轴折线图代码使用yyaxis实现左右双坐标轴两套数据量纲差异大也可放在同一张图展示。内置自定义科研配色、精细化坐标轴美化、横向图例微调、600DPI 超高分辨率图片导出画布16:9。适合论文绘图只需替换data.mat数据集即可快速复用。整体架构流程执行clear;clc;close all清空环境避免旧图、旧变量干扰。load读取data.mat获取共用横坐标X两组纵坐标Y1、Y2。定义 RGB 科研配色矩阵分别给两条曲线分配颜色。设置画布单位厘米配置 16:9 画布尺寸创建绘图窗口。yyaxis left激活左侧 Y 轴绘制第一条曲线配置左轴刻度、范围、标签。yyaxis right激活右侧 Y 轴绘制第二条曲线配置右轴刻度、范围、标签。设置 X 轴范围、刻度关闭多余边框配置网格、刻度方向。添加横向图例手动微调图例位置避免遮挡曲线统一设置 Arial 字体、字号、标题加粗。设置画布白色背景配置打印纸张参数。print 函数输出 600DPI 高清 PNG 图片保存到工作目录。技术名词解释yyaxis left / yyaxis rightMATLAB 双 Y 轴绘图命令切换当前作用的坐标轴left 对应左侧纵轴right 对应右侧纵轴两套 Y 轴可以独立设置范围、刻度。line()底层画线函数比 plot 更适合精细控制线条属性线宽、线型、颜色返回图形句柄方便后续操作图例。句柄 (handle)A1、A2、hLegend、hXLabel均为图形句柄通过 set 函数修改图形对象参数。Legend Position图例 Position 是 [left,bottom,width,height] 归一化坐标可以手动偏移微调图例摆放位置。‑r600输出图片分辨率数值越大图片越清晰论文常用 300‑600DPI。PaperPosition打印输出画布尺寸必须和 figure 窗口 Position 保持一致防止导出图片拉伸变形。技术细节数据集说明data.mat内部变量X1×201 double共用 x 轴坐标Y11×201 double绑定左侧 Y 轴Y21×201 double绑定右侧 Y 轴注意双轴图两组 Y 数据量纲可以完全不一样左轴范围[-0.6,0.6]右轴范围[-6,6]。配色C_all [ 0.0353 0.1569 0.2353 0.2353 0.7843 0.7529 0.9490 0.9216 0.7333];C1取第一行给 Y1 曲线C2取第二行给 Y2 曲线。关键绘图参数% 线条设置 Style,- % 实线 Marker,none % 不绘制标记点 LineWidth,1.5 % 线条宽度1.5坐标轴配置左 Y 轴范围[-0.6,0.6]步长 0.2标签Acurracy (%)右 Y 轴范围[-6,6]步长 2标签Time (s)X 轴当前设置[0,10]步长 2注意你的原始 X 数据最大只有 0.85这里需要根据真实数据修改 XLim、XTick否则曲线会挤在最左侧美化关闭 box 边框仅 Y 轴开启网格刻度向外TickDir out。图例设置横向图例orientation,horizontal位置东北northeast通过 Position 数组做微小偏移避免图例压曲线。字体输出全部使用 Arial 字体坐标轴 10 号标签、图例 11 号标题 12 号加粗。画布背景纯白。图片输出画布尺寸宽 16cm高 9cm输出分辨率 600DPI输出文件名双轴折线图.png。完整代码clear; clc; close all; %% 数据准备 % 读取数据 load(data.mat); % X1×201共用横坐标 % Y11×201第一组 y % Y21×201第二组 y %% 颜色定义 C_all [ 0.0353 0.1569 0.2353 0.2353 0.7843 0.7529 0.9490 0.9216 0.7333]; C1 C_all(1,:); C2 C_all(2,:); %% 图片尺寸设置单位厘米 figureUnits centimeters; figureWidth 16; figureHeight 9; %% 窗口设置 figureHandle figure; set(gcf, Units, figureUnits, Position, [0 0 figureWidth figureHeight]); %% 双轴折线图绘制 % 左轴 yyaxis left A1 line(X,Y1); set(A1, LineStyle,-,Marker,none,LineWidth, 1.5, Color, C1) hYLabel1 ylabel(Acurracy (%)); % 坐标区调整 set(gca, YColor, [.1 .1 .1],... % 坐标轴颜色 YTick, -0.6:0.2:0.6,... % 刻度位置、间隔 Ylim , [-0.6 0.6], ... % 坐标轴范围 Yticklabel,{-0.6:0.2:0.6}) % Y坐标轴刻度标签 % 右轴 yyaxis right A2 line(X,Y2); set(A2, LineStyle,-,Marker,none,LineWidth, 1.5, Color, C2) hYLabel2 ylabel(Time (s)); % 坐标区调整 set(gca, YColor, [.1 .1 .1],... % 坐标轴颜色 YTick, -6:2:6,... % 刻度位置、间隔 Ylim , [-6 6], ... % 坐标轴范围 Yticklabel,{-6:2:6}) % Y坐标轴刻度标签 %% X轴与其它细节调整 hXLabel xlabel(XAxis); hTitle title(Daxis line Plot); set(gca, Box, off, ... % 边框 XGrid, off, YGrid, on, ... % 网格 TickDir, out, TickLength, [.01 .01], ... % 刻度 XMinorTick, off, YMinorTick, off, ... % 小刻度 XColor, [.1 .1 .1],... % 坐标轴颜色 XTick, 0:2:10,... % 刻度位置、间隔 Xlim , [0 10], ... % 坐标轴范围 Xticklabel,{0:2:10}) % X坐标轴刻度标签 % Legend hLegend legend([A1,A2], ... Y1, Y2, ... Location, northeast,orientation,horizontal); % Legend位置微调 P hLegend.Position; hLegend.Position P [0.01 0.03 0 0]; % 字体和字号 set(gca, FontName, Arial, FontSize, 10) set([hLegend, hXLabel, hYLabel1, hYLabel2], FontSize, 11, FontName, Arial) set(hTitle, FontSize, 12, FontWeight , bold) % 背景颜色 set(gcf,Color,[1 1 1]) %% 图片输出 figW figureWidth; figH figureHeight; set(figureHandle,PaperUnits,figureUnits); set(figureHandle,PaperPosition,[0 0 figW figH]); fileout 双轴折线图; print(figureHandle,[fileout,.png],-r600,-dpng);
返回列表