文章目录
-
- 一、从研究问题出发,选择合适的图形
- 二、按论文版面设置尺寸、字体与坐标轴
- 三、完整实例:绘制均值曲线、误差带与对比面板
- 四、误差、拟合和统计信息应该怎样呈现
- 五、多子图、颜色映射与二维场的绘制
- 六、矢量图与高分辨率位图:格式选择及导出方法
-
- [PDF、SVG、EPS 与 PNG 的区别](#PDF、SVG、EPS 与 PNG 的区别)
- DPI、尺寸与矢量清晰度
- 怎样确认导出的图真正具有矢量属性
- 七、投稿前的图件检查与可复现管理
- 参考文献
用 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,或对同一组变量采用一致的颜色范围。这样既能提高绘图效率,也能减少人工调整带来的不一致。
科研插图的制作最终仍需要回到数据本身。图形应当清楚说明研究对象、变量关系和结果的不确定性,版式参数与导出格式则负责让这些信息在论文中得到准确呈现。将绘图过程写成可重复执行的脚本,保留数据和必要的计算记录,比在投稿前临时调整每一张图片更加可靠。
参考文献
- MathWorks. exportgraphics --- Export figure or plot
- MathWorks. Save Plot as Image or Vector Graphics File
- MathWorks. Compare Ways to Export Graphics from Figures
- MathWorks. tiledlayout --- Create tiled chart layout
- MathWorks. errorbar --- Line plot with error bars
- MathWorks. imagesc --- Display image with scaled colors
- MathWorks. colorbar --- Colorbar showing color scale
- MathWorks. clim --- Set colormap limits
- MathWorks. savefig --- Save figure as FIG-file