使用 MATLAB 和 Visio 制作论文级图形的实用方法

3 minute read

Published:

理论模型论文中的图形通常承担三种任务:

  • 展示参数变化与均衡结果之间的关系;
  • 呈现不同政策或市场结构的适用区域;
  • 说明博弈顺序、参与者关系和信息流动。

MATLAB 适合绘制数值结果、参数区域和利润曲线,Visio 适合绘制博弈顺序图、市场结构图和研究框架图。两者结合使用,可以覆盖理论论文中大多数图形需求。

这篇笔记主要解决几个常见问题:

  • MATLAB 图导出后不清晰;
  • PDF 四周留白过大;
  • 图在 Overleaf 中缩放后字体太小;
  • Visio 中的数学公式模糊;
  • Visio 导出的 PDF 像一整张页面,而不是紧贴图形;
  • PDF 中出现额外边框或阴影;
  • 多张图的字体、线型和尺寸不统一。

一、先明确图形的功能

绘图前应先判断这张图要回答什么问题。

1. 结果图

用于展示利润、价格、数量、概率或福利随参数变化的趋势。常见形式包括:

  • 折线图;
  • 参数区域图;
  • 热力图;
  • 阈值比较图;
  • 分段函数图。

这类图通常使用 MATLAB。

2. 结构图

用于展示:

  • 参与者之间的交易关系;
  • 产品流、资金流和信息流;
  • 侵占前后的市场结构;
  • 代理模式和转售模式的差异。

这类图通常使用 Visio。

3. 时序图

用于展示参与者的决策顺序,例如:

  1. 平台承诺信息政策;
  2. 需求状态实现;
  3. 信号生成并被观察;
  4. 供应商选择渠道;
  5. 各方定价;
  6. 消费者购买。

这类图也适合使用 Visio。

一张图最好只承担一个核心功能。不要同时塞入过多结果、公式和解释文字。

二、MATLAB 图形的基本设置

论文图形首先要保证尺寸、字体和线宽统一。下面给出一个可作为起点的模板。

figure;
set(gcf,'Units','Inches');
set(gcf,'Position',[1,1,6.2,4.2]);

plot(x,y,'LineWidth',1.5);

xlabel('Parameter');
ylabel('Equilibrium outcome');
title('Equilibrium outcome under different parameter values');

set(gca,'FontName','Times New Roman');
set(gca,'FontSize',11);
set(gca,'LineWidth',0.8);
box on;
grid off;

需要注意:

  • Position 的后两个数字控制图形宽度和高度;
  • 图形长宽比应当接近论文最终排版中的显示比例;
  • 不要先画一张很大的图,再在 LaTeX 中大幅缩小;
  • 字号应当按照最终页面尺寸判断,而不是只看 MATLAB 窗口中的效果。

如果论文采用双栏排版,应分别为单栏图和跨栏图设定固定宽度,避免每张图尺寸不同。

三、MATLAB 导出高清 PDF 的方法

向量 PDF 通常比 PNG 更适合曲线图、区域图和带有文字的学术图形。它在放大后不会明显失真,并且便于插入 Overleaf。

以下代码可以把 MATLAB 当前图形导出为高分辨率 PDF,并尽量减少页面边距:

set(gcf,'Units','Inches');
pos = get(gcf,'Position');

set(gcf,...
    'PaperPositionMode','Manual',...
    'PaperUnits','Inches',...
    'PaperSize',[pos(3),pos(4)]);

set(gcf,...
    'PaperPosition',[0.01,0.01,pos(3)-0.02,pos(4)-0.02]);

filename = 'D:\All\2506文献\picture\figure.pdf';
print(gcf,filename,'-dpdf','-r600');

close(gcf);

这段代码的逻辑是:

  1. 读取当前图形窗口的宽度和高度;
  2. 让 PDF 页面尺寸与图形窗口一致;
  3. 将图形放在几乎覆盖整个页面的位置;
  4. 以 PDF 格式输出;
  5. 使用 -r600 设置较高输出分辨率。

虽然 PDF 中的曲线和文本通常以向量方式保存,但高分辨率设置仍有助于处理图中的栅格元素。

四、为什么导出的 PDF 留白很大

MATLAB 默认的图形尺寸和打印页面尺寸可能不一致。即使 MATLAB 窗口看起来紧凑,输出时也可能被放入一张更大的虚拟纸张中,因此四周出现大量空白。

解决思路是同时控制:

  • PaperSize:PDF 页面尺寸;
  • PaperPosition:图形在页面中的位置和大小;
  • Position:MATLAB 图形窗口本身的尺寸。

核心原则是:

输出页面的长宽应与图形窗口接近,图形在页面中的位置应尽量覆盖整个页面。

代码中的

set(gcf,'PaperPosition',[0.01,0.01,pos(3)-0.02,pos(4)-0.02]);

表示只在四周保留极小边距。

如果坐标轴标题或图例被裁剪,可以适当增大边距,例如把 0.01 调整为 0.050.08

五、使用 exportgraphics 的替代方法

较新的 MATLAB 版本可以使用:

exportgraphics(gcf,'figure.pdf',...
    'ContentType','vector',...
    'Resolution',600);

或者直接导出坐标轴:

exportgraphics(gca,'figure.pdf',...
    'ContentType','vector',...
    'Resolution',600);

导出 gca 往往能够更紧密地围绕坐标轴裁剪,但可能不包含坐标轴之外额外添加的注释。导出 gcf 则保存整个 figure。

两种方法可以根据图形结构选择:

  • 图中只有一个坐标轴:优先尝试 gca
  • 图中包含额外文本、箭头或图例:优先使用 gcf
  • 需要精确控制页面尺寸:使用 PaperSizeprint

六、图例、坐标轴和数学符号

论文图应当尽量减少依赖图例。若曲线数量不多,可以直接在曲线附近添加文字标签,使读者不必反复在图例和曲线之间切换。

图例的基本设置示例:

legend({'Policy A','Policy B','Policy C'},...
    'Location','best',...
    'Box','off',...
    'FontName','Times New Roman',...
    'FontSize',10);

数学符号可以使用 LaTeX 解释器:

xlabel('$I$','Interpreter','latex');
ylabel('$\Pi_R$','Interpreter','latex');
title('The retailer''s expected profit',...
    'Interpreter','latex');

图例也可以设置:

legend({'$\Pi_R^{A}$','$\Pi_R^{B}$'},...
    'Interpreter','latex',...
    'Box','off');

需要检查导出后的 PDF,而不能只看 MATLAB 窗口。某些公式在窗口中正常,但导出后可能发生字体替换或位置偏移。

七、绘制分段区域图时的注意事项

理论论文经常需要展示“哪个策略在什么参数区域最优”。这类图的重点不是装饰,而是让区域边界与命题一一对应。

应当保证:

  • 横轴和纵轴对应命题中的关键参数;
  • 每条边界线都有清楚的经济含义;
  • 区域标签直接写在相应区域内部;
  • 图注说明固定参数取值;
  • 颜色、纹理或线型在全文保持一致;
  • 不要使用过多相近颜色;
  • 即使黑白打印,区域仍然能够区分。

如果图形是由利润比较得到,建议先分别绘制各方案利润,再绘制最终最优区域。这样更容易检查是否遗漏了交点或边界情况。

八、MATLAB 图形的一致性管理

同一篇论文中的所有图应当使用统一设置:

  • 字体;
  • 字号;
  • 线宽;
  • 图形宽高;
  • 坐标轴格式;
  • 同一政策所对应的颜色或线型;
  • 同一参数的符号;
  • 图例位置;
  • 文件命名规则。

可以把公共设置写成一个绘图函数或脚本。例如:

function format_academic_figure()
    set(gcf,'Units','Inches');
    set(gcf,'Position',[1,1,6.2,4.2]);

    set(gca,...
        'FontName','Times New Roman',...
        'FontSize',11,...
        'LineWidth',0.8);

    box on;
    grid off;
end

每张图绘制完成后调用:

format_academic_figure;

这样可以避免后期逐张调整。

九、使用 Visio 绘制博弈顺序图

Visio 特别适合制作决策顺序图。基本步骤是:

  1. 确定横向或纵向时间轴;
  2. 按行动顺序放置节点;
  3. 用箭头连接相邻阶段;
  4. 在节点上方或下方标注行动者;
  5. 明确区分外生状态、信号实现和参与者决策;
  6. 保持节点尺寸、间距和字体一致。

一个常见结构是:

平台承诺信息政策
        ↓
需求状态实现
        ↓
信号生成并被观察
        ↓
供应商选择渠道
        ↓
企业定价
        ↓
消费者购买

绘图时,节点中的文字要简洁。详细解释应放在正文或图注,而不是全部塞入图中。

十、Visio 中数学公式模糊的解决方法

直接在 Visio 文本框中输入复杂公式,字体和排版通常不理想。复制 Word 公式或截图,也可能在导出后变得模糊。

一种更稳妥的方法是:

  1. 在 LaTeX 公式工具中输入公式;
  2. 将公式保存为 SVG 格式;
  3. 把 SVG 文件插入 Visio;
  4. 调整大小时保持宽高比例;
  5. 导出为 PDF。

SVG 是向量格式,放大后仍然清晰,适合公式、希腊字母和上下标。

也可以从 LaTeX 或其他公式编辑器生成 SVG,但应当检查字体是否与论文正文协调。

十一、让 Visio 导出的 PDF 紧贴图形

Visio 默认可能把绘图放在一整张页面中,导致导出的 PDF 四周有大量留白。可以采用以下步骤。

第一步:调整页面边距

完成绘图后,在 Visio 中:

  1. 打开“开发工具”选项卡;
  2. 点击“显示 ShapeSheet”;
  3. 选择“页”;
  4. 找到 Print Properties
  5. 将以下边距设为较小数值,例如 2 mm
PageLeftMargin
PageRightMargin
PageTopMargin
PageBottomMargin

第二步:让页面适应绘图

点击:

设计 → 大小 → 适应绘图

这一步会让页面尺寸根据图形内容自动收缩,使导出的 PDF 更接近图形实际边界。

完成后应检查:

  • 图形是否过于靠近页面边缘;
  • 箭头或文字是否被裁剪;
  • 页面长宽比是否适合论文排版。

十二、消除 Visio PDF 中的边框或阴影

有时 Visio 导出的 PDF 会出现不需要的边框、阴影或结构标记。保存为 PDF 时可以:

  1. 点击“另存为”或“导出 PDF”;
  2. 打开“选项”;
  3. 取消:
辅助功能文档结构标记

然后重新导出并检查 PDF。

不同版本的 Visio 菜单名称可能略有差异,但关键是关闭可能额外写入页面结构或辅助标记的选项。

十三、市场结构图的绘制原则

市场结构图应当清楚展示参与者和流向,而不是追求复杂视觉效果。

常见元素包括:

  • Supplier;
  • Retailer 或 Platform;
  • Direct Channel;
  • Consumers;
  • 产品流;
  • 资金流;
  • 信息流;
  • 竞争关系。

可以使用不同线型表示不同关系:

  • 实线箭头:产品或交易流;
  • 虚线箭头:信息流;
  • 双向箭头:竞争或互动;
  • 不同粗细:主要关系和次要关系。

图中必须附有图例,或者在图注中说明不同箭头的含义。不要仅依赖颜色,因为论文可能被黑白打印。

若需要比较侵占前后结构,建议制作两个并列子图,并保持参与者位置尽量一致。这样读者可以快速识别新增渠道和竞争关系。

十四、插入 Overleaf 的推荐方式

PDF 图形可以使用:

\begin{figure}[htbp]
\centering
\includegraphics[width=0.80\textwidth]{figures/figure.pdf}
\caption{The equilibrium outcome under different parameter values.}
\label{fig:equilibrium}
\end{figure}

建议:

  • 不要通过过度缩小解决页面占用问题;
  • 优先在 MATLAB 或 Visio 中调整图形比例;
  • 使用相对宽度,例如 0.80\textwidth
  • 每张图都应在正文第一次出现前后被引用;
  • \label 放在 \caption 之后;
  • 文件名使用英文、小写和连字符或下划线;
  • 图形统一放在 figures 文件夹中。

十五、导出后必须进行的检查

图形完成后,至少进行三次检查。

1. 单独打开 PDF

检查:

  • 字体是否清晰;
  • 公式是否正常;
  • 边界是否裁剪;
  • 是否存在多余空白;
  • 线条是否过细;
  • 图例是否遮挡数据。

2. 插入论文后检查

有些图单独查看很清楚,但缩放到论文中后字体过小。必须在最终 PDF 中按正常阅读比例检查。

3. 黑白或灰度检查

检查不同曲线和区域在没有颜色时是否仍然可区分。必要时增加:

  • 虚线;
  • 点划线;
  • 标记符号;
  • 区域文字标签;
  • 不同填充纹理。

十六、常见问题与处理方法

问题一:图很清楚,但插入论文后字体太小

原因通常是 MATLAB 图形尺寸过大,插入论文时被大幅缩小。解决办法是按照最终版面比例重新设置 figure 尺寸和字体。

问题二:PDF 周围留白太多

MATLAB 中同步设置 PaperSizePaperPosition;Visio 中使用“适应绘图”并缩小页面边距。

问题三:Visio 公式模糊

不要使用截图。将公式导出为 SVG 后插入。

问题四:边界线和命题不一致

回到生成边界的阈值公式,逐条核对严格不等号、弱不等号和参数适用范围。图形不能代替解析条件。

问题五:同一政策在不同图中样式不同

建立统一的绘图模板和政策样式对应表,在开始绘图时就固定下来。

问题六:图很复杂,但读者看不出结论

删除非关键曲线,在图内直接标注最优区域,并在图注中指出图要说明的核心规律。

结语

论文级图形的关键不只是高清,而是清楚、统一并服务于理论结论。

MATLAB 的优势在于把解析结果和数值结果转化为曲线与参数区域;Visio 的优势在于把参与者、决策顺序和市场结构转化为直观框架。二者都应遵循同一个原则:

图形不是对正文的装饰,而是帮助读者更快理解模型结构和核心结论的分析工具。

只要在绘制阶段控制尺寸、字体和边界,在导出阶段使用向量 PDF 并减少空白,在论文中保持统一格式,就能够显著提高理论论文的可读性和专业程度。