【学术】学术论文中的科研绘图
最近一段时间,自己尝试主导、参与了一些学术论文发表的一些工作,其中对于一个尚未发表过较高质量论文的科研新手来讲,学术论文中的科研绘图是一个需要用心摸索的一项能力,这里面涉及到一些技术层面的东西,如powerpoint, pdf, png, 矢量图,也涉及到一些taste层面的东西,往深了追,可能就涉及到审美、艺术了(哈哈,现在自己还达不到)。但是经过历练,自己对一些新手常见的问题:图为什么插入论文后这么糊;字体,字号总感觉不舒服;从0到1,这个布局总是把握不好等等这些层面也有了一些心得,特此记录下来。后续再慢慢补充,添加。
1. 图的布局,字体、字号问题
1.1 从图最终怎么用倒推
一般投稿的会议或者期刊的官网都会提供latex工程模版。论文的正文区域(宽=x inch, 高=y inch),这个参数可以通过官方模版获得,例如iclr2027的官方模版中的iclr2027_conference.sty文件中有相关参数的说明:
\textheight 9.0 true in % Height of text (including footnotes & figures)
\textwidth 5.5 true in % Width of text line.
如果在最终插图使用的时候,不想整个图片完全占据所有可用宽度,可以通过调节一个scale因子,来给左右流出一点space,增加一点呼吸感。
\includegraphics[width=0.95\linewidth]{figure.pdf}
如果这里的scale因子是0.95那么这幅图片呈现的时候width就会是5.5*0.95=5.23inch 。总之本着不压缩图片的原则,根据上面的内容可以推算出我们在绘制插图的时候,图片尺寸应该也为5.23inch左右,这样在绘图软件上(例如PowerPoint,前提是这边要在绘图之前,通过“设计—>幻灯片大小–>自定义幻灯片大小”)看到的效果就是我们插入overleaf中渲染出来的效果。
举一个实际的例子,我现在想将两个子图拼成一个大图。第一个子图是一个流程框图,第二个子图是有两个折线图共同组成(因为它们共享legend,因此放在一起,不再单独拆分)。所以大概是
\begin{figure}[t]
\centering
\begin{subfigure}{0.32\linewidth}
\centering
\includegraphics[width=\linewidth]{fig1.pdf}
\caption{...}
\end{subfigure}
\hfill
\begin{subfigure}{0.64\linewidth}
\centering
\includegraphics[width=\linewidth]{fig2.pdf}
\caption{...}
\end{subfigure}
\caption{...}
\end{figure}
1.2 从子图最终怎么用倒推
1.2.1 需要使用PowerPoint绘制的流程框图fig1
显然,fig1的width尺寸为0.32 × 5.5 × 25.4 = 44.704mm = 4.47cm。因此在绘图之前,先要通过设计-幻灯片大小-自定义幻灯片大小,将幻灯片宽度设置为4.47cm。
-
字体用什么?
这个有一定的争论,有的人建议对于ppt使用Arial而非Times new roman。这个最好还是看下官方模版是否有提及,例如ICLR2027的模版有提到Times New Roman is the preferred typeface throughout.因此在绘图的时候,除非特殊情况,我一般还是使用Times new roman。 -
字号用多少?
正文的字号,一般都是被官方模版限定死的,ICLR2027设置的是10pt。但是图片上的文本大小倒是没有做说明。但一般为了视觉效果不至于太小,也不至于太大,一般建议范围是7~10pt之内。在这个范围内可以根据图中的不同层次意义进行选择,再有就是结合图的内容和图的大小限制。 -
流程图的框用多大
字体:Times New Roman
字号:8 pt
上边距:0
下边距:0
左边距:0
右边距:0
根据文字调整形状大小:✓
先按照上述设置,获得自然状态下的文字尺寸,然后在此基础上增加padding。这个padding根据自己的实际情况来设置(比如0.1, 0.15, 0.2都行),统一即可。然后再选出在这幅图中所有宽和高的最大值,然后再去除根据文字调整大小,采用人工设置尺寸的方式。
-
排列、对齐用起来
如果排列完之后,发现宽度超越了ppt的尺寸,则返回字体,可以将字体在7~10pt的范围内进行缩小。如果放小字体也无法合适,则要么调整框图的设计布局,要么就在overleaf的层面,增大该子图的缩放因子,比如从0.32增大到0.4等。 -
流程图中的箭头
箭头和方框线的宽度pt都选择为0.75pt吧 -
颜色
最后可以再给框图上一些颜色,这里包含填充颜色和框的颜色。
1.2.2 需要使用python绘制的折线图fig2
-
fig2的尺寸
我们一开始已经确认fig2的宽度是8.94厘米,它的高度通过与fig1对齐来获得。fig1的pdf一般会经过一个crop操作,在crop之后我们可以将最终的pdf转换为png,这样可以根据分辨率获得准确的长宽比(pdf2png网站推荐),从而获得fig1的高度为3.22厘米。(8.94,3.22)在python语言中会再将其转换为inch,因此绘图时,figsize = (8.94 / 2.54, 3.22 / 2.54)。 -
字体用什么?
Times New Roman也用这个吧。
1.3 最后的组装
再overleaf这个层面组装
\begin{figure}[t]
\centering
% (a) Left: flowchart
\begin{subfigure}[t]{0.32\linewidth}
\centering
\includegraphics[width=\linewidth]{figures/left_figure.pdf}
\caption{}
\label{fig:convergence}
\end{subfigure}
\hfill
% (b) Right: training curves
\begin{subfigure}[t]{0.64\linewidth}
\centering
\includegraphics[width=\linewidth]{figures/right_figure.pdf}
\caption{}
\label{fig:evolution}
\end{subfigure}
\caption{xxx.}
\label{fig:optimization_analysis}
\end{figure}
附录
单位换算
1 inch = 25.4 mm
1 inch = 72 pt
字体的安装
可能会遇到
RuntimeError: Times New Roman is not installed or not visible to matplotlib.
github上找一个,然后再代码中指定对应路径即可。
一些有用的网站
- pdf裁剪的网站:https://www.ilovepdf.com/
- pdf转换为png的网站:https://cloudconvert.com/pdf-to-png
934



被折叠的 条评论
为什么被折叠?



