MATLAB 绘图与科研论文插图制作:图形设计、统计表达与矢量导出

文章目录

用 MATLAB 绘制一张曲线图并不困难,真正费时间的往往是论文排版阶段:原本清楚的坐标轴缩进单栏后变得拥挤,几张图的字体和线宽不一致,误差带遮住曲线,或者图件插入文档后出现模糊和锯齿。有时图形本身足够清晰,但统计量没有标明含义,读者仍然无法判断阴影和误差棒究竟表示什么。

这些问题大多可以在编写绘图脚本时解决。论文插图既要忠实呈现数据,也要考虑最终的阅读尺寸、图形对象的安排以及文件如何进入 Word 或 LaTeX 等排版流程。下面围绕可复现的 MATLAB 示例讨论图形选择、版式设计、统计量呈现和文件导出。其中,矢量图作为论文插图制作中的一个重点单独展开。

一、从研究问题出发,选择合适的图形

图形形式首先取决于读者需要比较什么。若研究对象是随时间、频率或其他连续参数变化的响应,曲线图适合呈现整体趋势;如果数据只在若干离散条件下测得,散点图更容易保留观测的离散性。用直线连接离散点并不总是错误,但连线可能暗示两点之间的变化过程已知。对于实验数据,是否连线应由采样过程和研究问题决定。

比较两种方法时,还需要区分趋势比较和差异比较。两条曲线绘制在同一坐标轴上,便于观察变化规律,却未必能看清较小的偏差。若差异是研究重点,可以增加差值面板或残差面板,而不必通过不断加粗线条来强调微小差距。对于拟合结果,原始观测和模型预测最好使用不同的图形表示,例如用散点表示观测、用连续曲线表示拟合,并在图注中说明拟合方法。

当数据具有二维空间结构时,imagesc、contourf 等函数通常比一张密集的三维曲面图更利于读取位置和数值。surf 适合展示表面几何形状,但透视、遮挡和光照会影响定量比较。如果主要结论依赖两个区域的数值大小,带有明确色标的二维图有时更直接。

选择图形时还需要避免视觉处理改变数据的含义。平滑、插值和归一化都可能具有合理用途,但应保留原始数据的可追溯性。对坐标范围进行截取、使用对数刻度或调整颜色范围,也应与研究问题相符。尤其在柱状图中,非零起点可能显著放大类别间的视觉差异;在曲线图中,局部放大则可以使用,但需要明确显示所取范围。

实际绘图中,常见图形的适用场景可以作如下区分:

图形类型 适合表达的内容 需要注意的问题
曲线图 plot 连续变量的变化趋势、理论函数及数值解 坐标范围、线型区分及曲线数量
散点图 scatter 离散观测、变量相关性及样本分布 点的遮挡、透明度与样本密度
误差棒图 errorbar 均值与不确定性或离散程度 必须说明误差棒的统计含义
等值线图 contourf 二维标量场的数值分布 等值线级别、颜色范围与色标
图像显示 imagesc 矩阵数据、热力图及二维参数扫描 坐标方向、颜色映射和数值范围
曲面图 surf 三维表面结构及函数几何特征 遮挡、视角、网格密度与导出性能

对于同一组数据,可以尝试几种图形形式,但最终应选择最有利于表达研究结果的一种。图形包含的信息并非越多越好,过多的曲线、标记和图例可能使读者难以辨认主要结论。

二、按论文版面设置尺寸、字体与坐标轴

科研插图的排版最好从预期的使用宽度开始。许多期刊采用单栏和双栏版式,可以暂时用约 8~9 cm 规划单栏图、用约 16~18 cm 规划跨双栏图,但这些只是常见的设计起点,最终应核对目标期刊给出的尺寸要求。若一张图最终只有 8.5 cm 宽,在 MATLAB 中将其放大到 20 cm 再调字体,导出后缩小往往会使刻度文字过小。

MATLAB 可以直接以厘米为单位设置图窗:

matlab 复制代码
fig = figure('Color','w', ...
    'Units','centimeters', ...
    'Position',[2 2 17 7.5]);

Position 前两个数值表示图窗在屏幕上的位置,后两个表示图窗宽度与高度。它为布局提供了稳定的参照,但不保证导出文件的外边界恰好是 17 cm。使用 exportgraphics 时,标签、图例以及输出时的留白也会影响最终尺寸。对精确的投稿尺寸,需要在导出后检查实际宽度。

字体、线宽和标记大小应结合这一尺寸设定。对于后文的双面板示例,9 pt 的坐标轴文字、约 1.5 pt 的主曲线线宽可以作为初始参数,之后还需按最终插入论文的实际大小检视。不同图件尽量统一字体、刻度方向、轴线宽度及面板标记的样式。

若主要使用英文坐标标签,可以统一采用 Times New Roman 等常用字体;中文标签则要选用能够完整显示中文的字体,并检查跨平台导出是否发生字体替换。

MATLAB 中可以通过坐标轴句柄集中设置这些属性:

matlab 复制代码
set(gca, ...
    'FontName','Times New Roman', ...
    'FontSize',9, ...
    'LineWidth',0.8, ...
    'TickDir','out', ...
    'Box','off');

其中,FontSize 控制坐标轴刻度文字的字号,LineWidth 在这里控制坐标轴线条的宽度,TickDir='out' 将刻度方向设置为向外,Box='off' 则关闭完整的坐标轴边框。曲线本身的线宽需要通过对应的 plot 对象单独设置。

坐标轴标签应同时交代变量和单位,例如 Time (s)、Voltage (V)。无量纲量应按实际定义标注,不宜随意写成某种物理单位。图例能放在不遮挡数据的位置时,可直接放在绘图区内;一旦出现遮挡,调整布局通常比缩小图例文字更合适。对于对比图,颜色与线型最好配合使用,以免黑白打印后两条曲线失去区分。

同一篇论文中的图件应尽量保持一致的视觉规范,但没有必要让所有图使用完全相同的坐标范围。只有当不同面板表示相同变量、需要进行直接比较时,统一坐标范围才有明确意义。

三、完整实例:绘制均值曲线、误差带与对比面板

下面模拟两种方法随时间变化的响应数据。每种方法包含 24 条观测曲线,左侧面板显示均值和"均值 ± 1 个样本标准差",右侧面板显示两种方法均值的逐点差值 B − A。这样既能比较整体变化趋势,也能观察差异随时间的方向和大小。

示例数据由程序生成,仅用于说明绘图方法,不对应真实实验。为了使结果可复现,代码固定了随机数种子。脚本使用 tiledlayout 和 exportgraphics,以 MATLAB R2020a 及以后版本为基础。

matlab 复制代码
%% MATLAB 论文插图示例:均值、误差带、差值及文件导出
% MATLAB R2020a 及以后版本
% 所有数据均为模拟数据,仅供绘图演示
clear; close all; clc;
rng(2026);

%% 1. 生成两组模拟观测
x = linspace(0,10,121).';
nRep = 24;

idealA = 1 - exp(-0.42*x);
idealB = 0.80*(1 - exp(-0.56*x));

% 每条曲线有一个独立偏移,并叠加逐点随机扰动
obsA = idealA + 0.025*randn(1,nRep) ...
    + 0.030*randn(numel(x),nRep);
obsB = idealB + 0.025*randn(1,nRep) ...
    + 0.030*randn(numel(x),nRep);

meanA = mean(obsA,2);
meanB = mean(obsB,2);
sdA   = std(obsA,0,2);
sdB   = std(obsB,0,2);
diffBA = meanB - meanA;

%% 2. 统一图形参数
cA = [0.13 0.39 0.68];
cB = [0.82 0.36 0.18];
fontSize = 9;
mainWidth = 1.5;

fig = figure('Color','w','Units','centimeters', ...
    'Position',[2 2 17 7.5]);
t = tiledlayout(fig,1,2, ...
    'TileSpacing','compact','Padding','compact');

%% 3. 面板 (a):均值与样本标准差
ax1 = nexttile(t,1);
hold(ax1,'on');

fill(ax1,[x; flipud(x)], ...
    [meanA-sdA; flipud(meanA+sdA)],cA, ...
    'FaceAlpha',0.17,'EdgeColor','none', ...
    'HandleVisibility','off');
fill(ax1,[x; flipud(x)], ...
    [meanB-sdB; flipud(meanB+sdB)],cB, ...
    'FaceAlpha',0.17,'EdgeColor','none', ...
    'HandleVisibility','off');

plot(ax1,x,meanA,'-','Color',cA, ...
    'LineWidth',mainWidth,'DisplayName','Method A');
plot(ax1,x,meanB,'--','Color',cB, ...
    'LineWidth',mainWidth,'DisplayName','Method B');

xlabel(ax1,'Time (s)');
ylabel(ax1,'Response (a.u.)');
xlim(ax1,[0 10]);
legend(ax1,'Location','southeast','Box','off');
text(ax1,0.03,0.96,'(a)','Units','normalized', ...
    'VerticalAlignment','top','FontWeight','bold');

%% 4. 面板 (b):逐点均值差
ax2 = nexttile(t,2);
hold(ax2,'on');
yline(ax2,0,'--','Color',[0.5 0.5 0.5], ...
    'LineWidth',0.8);
plot(ax2,x,diffBA,'Color',cA, ...
    'LineWidth',mainWidth);

xlabel(ax2,'Time (s)');
ylabel(ax2,'Mean difference B - A (a.u.)');
xlim(ax2,[0 10]);
text(ax2,0.03,0.96,'(b)','Units','normalized', ...
    'VerticalAlignment','top','FontWeight','bold');

%% 5. 统一坐标轴样式
set([ax1 ax2], ...
    'FontName','Times New Roman', ...
    'FontSize',fontSize, ...
    'LineWidth',0.8, ...
    'TickDir','out', ...
    'Box','off');

%% 6. 保存矢量图、位图与可编辑 FIG 文件
outDir = fullfile(pwd,'figures');
if ~exist(outDir,'dir')
    mkdir(outDir);
end

exportgraphics(t,fullfile(outDir,'comparison_vector.pdf'), ...
    'ContentType','vector','BackgroundColor','white');
exportgraphics(t,fullfile(outDir,'comparison_600dpi.png'), ...
    'Resolution',600,'BackgroundColor','white');
savefig(fig,fullfile(outDir,'comparison.fig'));

数据矩阵中的每一列是一条模拟观测曲线,每一行对应一个时间点,因此 mean(obsA,2) 和 std(obsA,0,2) 分别计算该时间点的样本均值与样本标准差。与仅给两条平滑曲线相比,保留观测的离散程度能避免读者将随机波动误认为方法本身的变化。

阴影由 fill 绘制,使用均值上下一个标准差的边界组成闭合区域。FaceAlpha 用来调节透明度,HandleVisibility='off' 则避免阴影对象重复出现在图例中。均值曲线放在阴影之后绘制,两种方法分别使用实线和虚线,即使转换为灰度图也能保持一定的区分度。

对于布局,tiledlayout 比逐个手动指定坐标轴位置更便于维护。调整图窗宽度或子图间距时,两个面板可以一起更新。右图加入零参考线,是为了让差值的正负方向更容易辨认。两张图的横轴单位相同,便于根据时间位置比较,但纵轴表示的变量不同,不应强行设置相同的纵轴范围。

这段代码将数据生成、统计计算、图形设置和文件导出放在不同的代码段中。对于实际科研项目,可以进一步将数据读取与绘图部分分离,使同一套绘图参数能够应用于不同实验条件。

四、误差、拟合和统计信息应该怎样呈现

科研图件中的误差棒和误差带很容易被误读。样本标准差(SD)反映一组观测值的离散程度;均值标准误(SEM)通常用于描述样本均值的估计精度,在独立同分布等适当条件下,可由样本标准差除以样本量的平方根估计;置信区间(CI)则依赖选定的统计模型、置信水平以及数据之间的独立性或相关结构。

三者虽然可能采用相似的绘图方式,但具有不同的统计含义:

统计量 主要含义 在科研图中的常见用途
标准差(SD) 描述观测值的离散程度 说明重复测量或样本之间的变化范围
均值标准误(SEM) 描述样本均值估计的不确定性 表示均值估计的精度
置信区间(CI) 根据统计模型构建的参数区间估计 表达参数估计的不确定性

本文使用的是逐时间点的"均值 ± 1 SD",并没有计算 95% 置信区间。右图展示的是两组样本均值之差,也不表示已经完成显著性检验。若数据来自重复测量、配对实验或不同组间的独立样本,差值的置信区间与统计检验方法都应根据设计分别计算;尤其不应仅凭两条误差带是否重叠来判断显著性。

对采样点较少的实验,更适合直接画出测量点和误差棒。例如已有 xSample、meanSample 与标准差 sdSample 时,可使用:

matlab 复制代码
errorbar(xSample,meanSample,sdSample,'o-', ...
    'LineWidth',1.1,'CapSize',6);

这里的第三个参数是误差棒在均值上下两侧的长度。如果误差不对称,errorbar 还支持分别提供下误差和上误差。绘图函数只负责显示数值,误差的统计定义仍需要由数据处理过程决定,并在图注中说明。对于样本量较小的数据,有时直接画出所有观测点,比只给一个均值加误差棒提供的信息更多。

拟合曲线也有类似的问题。把离散观测用 plot 连成折线、用 smoothdata 平滑、通过模型拟合得到曲线,三者表达的内容不同。若需要展示模型对实验的解释能力,应区分原始观测与拟合结果,并说明模型类型、参数估计方法和适用范围。

对于经过插值或平滑处理的数据,图注也应交代必要的处理信息。例如,使用移动平均平滑时,应说明窗口长度及相关处理方式;使用多项式拟合时,应说明模型阶数和参数估计方法。不要为了追求平滑效果而省略异常点或修改原始数据;如确实需要数据清洗,应保留依据和处理记录。

本例的图注可以写成:

图 1. 两种方法的模拟响应对比。(a)每种方法 24 条模拟观测曲线的均值,阴影表示均值 ± 1 个样本标准差;(b)Method B 与 Method A 的逐时间点均值差。模拟数据仅用于说明绘图方法。

五、多子图、颜色映射与二维场的绘制

当一张图包含多个面板时,统一性比局部装饰更重要。同类变量使用一致的颜色和单位,不同面板的字母标注放在相近位置;若多个面板具有相同的量纲、需要直接比较数值范围,应考虑统一坐标轴范围。相反,若每个面板表示不同的物理量,就没有必要为了形式整齐而强行采用同样的坐标轴限值。

MATLAB 提供了 subplot 和 tiledlayout 等多子图布局方法。subplot 适合较简单的布局,而 tiledlayout 在控制子图间距、共享图例和颜色条等方面更加方便。对于需要同时展示多个实验条件的论文图,合理的布局能够减少重复标签占用的空间,也便于保持各个面板的尺寸一致。

颜色图尤其需要注意颜色与数值之间的对应关系。imagesc 会根据颜色范围把数据映射到颜色表,如果两张图分别使用自动范围,即使其中一张数据整体偏小,颜色也可能看起来同样强烈。在比较同一个物理量的两个工况时,应统一颜色映射范围,并保留说明单位的色标。

下面的示例比较两个二维标量场。两幅图的颜色范围都固定为 [0,1],所以相同颜色代表相同数值。代码使用 caxis 设置颜色范围;在 MATLAB R2022a 及以后版本,也可以使用 clim。

matlab 复制代码
xv = linspace(-2,2,101);
yv = linspace(-2,2,101);
[X,Y] = meshgrid(xv,yv);

Z1 = exp(-((X+0.5).^2 + Y.^2));
Z2 = 0.7*exp(-((X-0.7).^2 + (Y-0.2).^2));

f2 = figure('Color','w');
t2 = tiledlayout(f2,1,2, ...
    'TileSpacing','compact','Padding','compact');

axA = nexttile(t2,1);
imagesc(axA,xv,yv,Z1);
axis(axA,'xy');
axis(axA,'image');
caxis(axA,[0 1]);
title(axA,'Condition A');
xlabel(axA,'x'); ylabel(axA,'y');

axB = nexttile(t2,2);
imagesc(axB,xv,yv,Z2);
axis(axB,'xy');
axis(axB,'image');
caxis(axB,[0 1]);
title(axB,'Condition B');
xlabel(axB,'x'); ylabel(axB,'y');

colormap(f2,parula(256));
cb = colorbar(axB);
cb.Layout.Tile = 'east';
cb.Label.String = 'Intensity (a.u.)';

这里的 axis(...,'xy') 使纵轴按照通常的数学坐标方向向上增加,避免图像显示时上下方向与物理坐标不一致;axis(...,'image') 则使两个坐标方向采用相同的数据单位比例。在具有空间尺度的实验图中,这些设置可能直接影响读者对几何形状的判断。

对于具有正负意义、且零值是参考点的数据(例如残差场),应根据数据含义选择适合表现正负偏差的颜色映射,并使色标中心与零值对应。若使用 contourf,还需要考虑等值线级别是否过粗或过密;使用 surf 时,则应检查视角、光照和遮挡是否妨碍定量阅读。

颜色映射还应考虑不同设备及阅读环境。某些配色在彩色屏幕中容易区分,转换为灰度后却可能失去层次。因此,涉及类别对比的图形不宜只使用颜色编码;连续标量场则应尽量采用数值变化方向清晰的颜色表。对于需要精确读取局部数值的图件,还可以增加等值线或必要的数值标注。

六、矢量图与高分辨率位图:格式选择及导出方法

对于坐标轴、曲线、散点和简单几何形状为主的论文插图,矢量格式通常应作为首选。位图记录的是有限数量的像素,缩放过大时会出现像素化或插值痕迹;矢量图保存线段、曲线和文字等图形信息,可以在不同显示尺寸下重新绘制。也正因为如此,矢量图适合插入需要反复调整版面的论文文档。

不过,矢量图的优势主要体现在适合矢量表示的对象上。对于显微照片、实验成像结果,或包含大量网格面片和复杂透明效果的三维图,合适分辨率的位图可能更稳定。科研插图也允许混合内容:例如在一幅照片上添加矢量箭头、文字和比例尺,底层照片依然是位图,文字与标注则可以保留矢量属性。

PDF、SVG、EPS 与 PNG 的区别

文件扩展名不能单独证明图形内容的类型。PDF 既可以包含矢量路径,也可以包含嵌入的位图。 将 PNG 插入 PDF,不会让原来的像素自动变成矢量曲线。MATLAB 的 exportgraphics 默认会根据图形内容选择处理方式;对于典型的二维曲线图,可明确指定 ContentType='vector':

matlab 复制代码
exportgraphics(t,'figure_vector.pdf', ...
    'ContentType','vector', ...
    'BackgroundColor','white');

这会请求以矢量图形方式输出布局 t 中的内容。对于线图和文字,通常可以获得适合放大的输出;但复杂三维绘图、透明对象和部分特殊效果仍应实际检查,不能因为设置了 vector 就默认所有视觉细节都已正确保留。

格式 常见用途 使用时需要注意
PDF(矢量输出) 线图、散点图、多面板论文图 检查内部是否含位图、字体和透明效果是否正常
SVG 在兼容的排版或矢量编辑软件中继续处理 exportgraphics 直接导出 SVG 从 R2025a 开始支持
EPS 明确要求 EPS 的投稿流程或较旧的排版工具链 透明效果支持有限,需检查阴影与图层
PNG / TIFF 照片、图像矩阵、复杂渲染及要求位图的稿件 按最终尺寸确定像素数和分辨率
FIG MATLAB 内重新打开和编辑绘图对象 应与原始数据、脚本一起保存,不能代替投稿图件

PDF 通常可以作为二维曲线图的主要交付版本。若需要 SVG,从 MATLAB R2025a 起可使用 exportgraphics 直接导出:

matlab 复制代码
% MATLAB R2025a 及以后版本
exportgraphics(t,'figure_vector.svg', ...
    'ContentType','vector');

早期版本不能直接照搬这段 SVG 代码;若期刊要求特定格式,应选择当前版本支持的导出路径并核对输出。对于 EPS,半透明误差带尤其值得留意。EPS 的透明支持存在限制,示例中的阴影可能无法保持与 MATLAB 图窗完全一致的显示效果,因此不宜仅通过修改文件扩展名完成投稿转换。

DPI、尺寸与矢量清晰度

DPI 主要用于描述位图在给定物理尺寸下的像素密度。例如,一幅图最终以 8.5 cm 宽排版,在 300 DPI 下大约需要 1004 个水平像素;若投稿规范要求 600 DPI,则需要更多像素。MATLAB 位图导出可写为:

matlab 复制代码
exportgraphics(t,'figure_600dpi.png', ...
    'Resolution',600, ...
    'BackgroundColor','white');

提高 Resolution 可以增加位图的像素数量,但并不能把已有的低分辨率原始照片变成包含更多真实细节的照片。对于 ContentType='vector' 的导出,Resolution 也不会提升矢量线条的几何清晰度。

实际绘图时还要考虑图件的物理尺寸。矢量格式可以在缩放时保持线条轮廓清晰,但字号、标记和图例也会随图件整体缩放,缩得过小仍然难以阅读。

如果使用 MATLAB R2025a 或更新版本,可以在 exportgraphics 中直接指定输出宽度和单位,例如:

matlab 复制代码
% MATLAB R2025a 及以后版本
exportgraphics(t,'figure_17cm.pdf', ...
    'ContentType','vector', ...
    'Width',17,'Units','centimeters');

这里的宽度包括导出图形周围的留白。对于更早的 MATLAB 版本,可先设置图窗和布局尺寸,再检查输出文件在排版软件中的实际宽度。

怎样确认导出的图真正具有矢量属性

检查不能只停留在 MATLAB Figure 窗口。建议把 PDF 放进实际的 Word 或 LaTeX 文档,在目标栏宽下查看坐标轴数字、图例、曲线粗细和面板标记;再使用 PDF 阅读器放大检查文字和线条边缘,确认没有明显锯齿、丢字或异常色块。

不过,放大后看起来清楚只能作为初步判断,严格验证矢量属性还需要在 PDF/SVG 编辑器或分析工具中检查对象结构。

例如,可以在支持矢量编辑的软件中打开 PDF,检查曲线、坐标轴和文字是否仍以独立对象或路径形式存在。如果整张图被识别为一幅大尺寸的嵌入图片,就说明它至少在该编辑流程中不再具有可分别编辑的矢量图元。

需要注意,图件是否包含位图对象与图件是否合格并不完全等价。对于包含照片或图像矩阵的混合图形,保留局部位图内容是正常的。检查的重点应放在那些本来适合矢量表示的曲线、坐标轴和文字上。

对包含半透明区域的图件,还要确认阴影有没有变成不透明色块、边界是否出现异常,以及线条是否仍压在阴影上方。对于二维颜色图和三维渲染图,则应检查输出文件大小、色彩表现和显示性能,避免为了获得矢量格式而使文件难以正常打开或编辑。

七、投稿前的图件检查与可复现管理

MATLAB 中的绘图结果通过初步检查后,还需要放进实际的论文版面中重新审视。图窗中的显示尺寸、导出文件的尺寸以及论文中的最终显示尺寸可能不同,而不少排版问题只有在最后一步才会暴露。

一张图是否符合投稿要求,通常需要从图形内容、统计表达、版面排布、文件格式和可复现性等方面分别检查。仅仅确认文件能够正常打开,还不足以判断它是否适合正式投稿。

图形检查的主要内容

下面整理了科研论文插图中较常见的检查项目,适合在完成 MATLAB 绘图后逐项核对。

检查项目 需要确认的内容 常见问题及处理方式
图形尺寸 图件是否符合期刊规定的单栏或双栏宽度 避免导出后大幅缩放,必要时重新设置图窗尺寸
字体与字号 坐标轴、图例和标注在最终版面中是否清晰 字号过小应在 MATLAB 中调整,不能依赖放大位图解决
坐标轴标签 变量符号、名称与单位是否完整 补充遗漏单位,统一全文采用的符号及缩写
坐标范围 范围设置是否合理,是否影响数据解释 检查截断坐标轴、对数坐标及自动缩放的影响
线型与颜色 不同数据系列能否清楚区分 配合实线、虚线、标记符号,检查灰度显示效果
图例与标注 是否存在遮挡、重复说明或标注混乱 调整图例位置,统一面板字母和字体
统计信息 误差棒、误差带及统计符号是否具有明确含义 在图注中说明 SD、SEM、CI、样本量和统计方法
多面板布局 子图顺序、间距、坐标范围是否便于比较 使用统一的布局参数,避免标签与相邻面板重叠
颜色映射 相同颜色是否对应可比较的数值 检查色标范围、颜色表及单位是否一致
矢量属性 曲线、坐标轴和文字是否按预期保留为矢量内容 使用矢量编辑器或 PDF 分析工具检查
位图分辨率 输出像素数是否满足最终尺寸和期刊要求 按实际排版尺寸确定所需分辨率
文件兼容性 图片能否在投稿系统和排版软件中正常显示 检查字体、透明效果、特殊符号和文件大小
数据一致性 图中结果是否与原始数据及正文描述一致 核对数据版本、处理方法和图注内容
可复现性 能否通过数据与脚本重新生成相同图件 保存随机数种子、依赖函数、原始数据和绘图参数

这些检查项目不需要全部在同一个阶段完成。更合理的方式是在数据处理结束后先核对统计结果与数据含义,在 MATLAB 中完成图形样式和布局检查,再在导出和排版阶段检查文件尺寸、字体及矢量属性。这样可以减少因为后期发现问题而反复修改同一张图的情况。

在最终论文版面中检查图件

论文中的图片通常会被缩放到固定栏宽,因此检查时应以最终的排版效果为准。可以将 PDF 或高分辨率位图插入 Word、LaTeX 等实际使用的文档,在正常页面比例下查看。

此时需要关注的往往是一些细节:坐标轴数字是否仍然容易辨认,图例是否遮挡数据,多个面板的标签有没有重叠,数学符号有没有出现字体替换。如果使用了半透明误差带,还应检查阴影在 PDF 阅读器和最终排版环境中的表现是否一致。

不同期刊对图件的要求并不完全相同。有的期刊要求单独提交 TIFF 图片,有的允许 PDF 或 EPS,也有期刊对最小字号、线宽和色彩模式给出明确限制。因此,在完成通用检查后,仍应以目标期刊的最新投稿指南为准。

对于需要同时提交多个图件的论文,建议将它们放在同一页面中进行一次整体检查。不同图之间如果出现明显的字体、线宽、配色和标签风格差异,即使单张图看起来没有问题,整篇论文的视觉效果仍可能不统一。

保留可复现的绘图过程

图件修改是科研论文写作中的常见工作。审稿人可能要求增加一条对比曲线,或者调整坐标范围、统计误差的表示方式及多面板结构。如果绘图过程只依赖手动操作,后续修改往往难以准确复现。

因此,实际科研项目中最好将数据处理、统计计算、图形参数与文件导出都保留在脚本中,并把输出文件集中管理。例如,可以采用以下目录组织方式:

text 复制代码
ResearchProject/
│
├── data/
│   ├── raw_data.mat
│   └── processed_data.mat
│
├── scripts/
│   ├── process_data.m
│   └── plot_figures.m
│
└── figures/
    ├── figure01.pdf
    ├── figure01.png
    └── figure01.fig

其中,raw_data.mat 保存原始数据,processed_data.mat 保存经过处理的数据;process_data.m 记录必要的数据处理步骤,plot_figures.m 则负责绘制和导出图件。这样的目录结构并不是 MATLAB 的强制要求,但有利于区分数据来源、计算过程与最终成果。

savefig 可以保存 MATLAB 图形对象,便于后续重新打开并修改图形属性,不过 FIG 文件不能替代数据处理脚本,也不能保证重新生成所有数据。因此,对于需要长期维护的科研项目,应同时保留原始数据、计算代码和最终导出图件。

此外,建议在脚本中集中定义常用的绘图参数,包括字体名称、字号、颜色、线宽、图窗尺寸和输出目录。不同图件调用相同的参数后,修改论文整体风格时只需调整少量设置,就能重新生成具有一致视觉规范的图片。

对于大量图件,还可以进一步将绘图操作封装为函数,例如统一设置坐标轴样式、自动导出 PDF 和 PNG,或对同一组变量采用一致的颜色范围。这样既能提高绘图效率,也能减少人工调整带来的不一致。

科研插图的制作最终仍需要回到数据本身。图形应当清楚说明研究对象、变量关系和结果的不确定性,版式参数与导出格式则负责让这些信息在论文中得到准确呈现。将绘图过程写成可重复执行的脚本,保留数据和必要的计算记录,比在投稿前临时调整每一张图片更加可靠。

参考文献

相关推荐
Funlang2 小时前
给机器写的 JavaScript 造个笼子
开发语言·javascript·ecmascript
普通人62 小时前
PHP文件读写完全指南
开发语言·php·1024程序员节
坤坤子吖3 小时前
Linux网络编程:TCP服务器的多进程与多线程实现
linux·服务器·开发语言·网络·c++·笔记·学习
一晌小贪欢3 小时前
Python基础:第 09 篇 · while 循环:重复直到不满足
开发语言·c++·python·数据可视化·面向对象·python办公
xiaoye-duck4 小时前
《C++ 项目:手写大模型接入 SDK》LLMManager架构设计与实现
开发语言·网络·c++·语言模型
一条大祥脚4 小时前
CuTe 与 CuTe DSL:从 C++ 模板元编程到 Python DSL 的 GPU 编程演进
开发语言·c++·python·cutlass·cute·cute dsl
FRing035 小时前
vue2干货总结8(路由模块封装、router-link、声明式导航、路由重定向、编程式导航)
开发语言·前端·vue.js·vue2
旖旎夜光5 小时前
【C++ 基础入门】C++ 多态(上):虚函数、重写、override/final 与抽象类
开发语言·c++·笔记·学习
starzy19905 小时前
深入理解Scala嵌套函数:作用域封装之道
开发语言·scala