【本期看点】
Matlab是工程应用领域中常用的一种编程语言,众所周知,Matlab绘图函数默认的图形参数设置所能达到的绘图效果是十分有限的,不过Matlab绘图函数有很多精巧的设计,通过自行调整绘图函数的图形参数,有时可能能达到意想不到的效果。
本期将详细介绍如何使用Matlab实现高质量的科技绘图,绘图实例包括多组合曲线图、热力图,在科技绘图方面具有一定的通用性,值得说明的是,这些实例来自于交通领域顶级期刊《Transportation Research Part C: Emerging Technologies》于2019年出版的一篇论文《Missing traffic data imputation and pattern discovery with a Bayesian augmented tensor factorization model》。
目前,论文第一作者Xinyu Chen已将相应的绘图代码在GitHub上开源,GitHub项目网址为:
https://github.com/xinychen/academic-drawing
本期投稿
作者:cat
数学爱好者
为什么要做科技绘图
在科研过程中,不少科研工作者甚至大量硕士、博士都会将精力放在做实验上,但获得理想的实验结果之后,我们该如何直观地展现这些结果呢?实际上,我相信很多人都被这个问题长期困扰着,有时候,辛辛苦苦得来的结果往往不知道如何对其进行可视化。另外,如果我们想把手上的研究工作投到高水平期刊上,此时可视化作为文章的第一印象就显得尤为重要了,规范的、高质量的科技绘图是发表高水平论文的必备条件。
Matlab绘图的基本介绍Matlab作为我们所熟知的编程语言,一直备受广大科研工作者的青睐,当然,这跟它自身在科学计算方面的优势密不可分,除此之外,就是Matlab强大的绘图工具,方便且灵活,能够让使用者体验一波“骚操作”所能带来的视觉效果。
在这里,本文将用到以下几个基本命令绘制多组合曲线图和热力图:
- figure():这是Matlab用于创建绘图的函数。
- plot():这是Matlab中使用最为广泛的绘图函数,能够绘制散点图、曲线图等。
- imagesc():这是Matlab中用来绘制热力图的函数。
- fill():这是Matlab中用于标记并绘制区域的函数。
论文中的插图一般是什么样子呢
在介绍如何使用Matlab绘制多组合曲线图和热力图之前,我们不妨先看看一般论文中的插图长什么样。在这里,我们以论文《Missing traffic data imputation and pattern discovery with a Bayesian augmented tensor factorization model》为例,下面是这篇论文中两幅插图。
▲ 贝叶斯增强张量分解模型显性参数的估计值规律
▲ 贝叶斯张量分解在每次迭代过程中的绝对误差和下界值
使用Matlab绘制多组合曲线图
【实例1】如何使用Matlab绘制如下图形?
【绘图过程】绘图过程分由如下几步组成。
第一步:
下载文件名为mu10.mat的数据并将数据读入至Matlab中,其中,数据的下载网址为
https://github.com/xinychen/academic-drawing/blob/master/curves/mu10.mat;同时,使用figure()函数设置绘图字体大小为16号。
第二步:
在坐标轴上设置绘图区域,使用plot()函数和fill()函数分别绘制曲线和灰色区域,其中,灰色区域的透明度是由alpha()函数控制,这里的透明度为20%,另外,为了突出红色曲线和虚线,这里将线条粗细调整为2.
第三步:
调整坐标轴并在图中标记曲线的名称。
第四步:
使用set()函数设置图片大小为长6厘米、宽4.5厘米,并使用saveas()函数保存图片为pdf,文件名为mu_curve10
完成上述四个步骤即可得到我们想要的多组合曲线图。
【实例2】如何使用Matlab绘制如下图形?
第一步:
下载文件名为BCPF_fiber_rmselb_m30_r10.mat的数据并将数据读入至Matlab中,其中,数据的下载网址为
https://github.com/xinychen/academic-drawing/blob/master/curves/BCPF_fiber_rmselb_m30_r10.csv
同时,使用figure()函数设置绘图字体大小为16号。
第二步:
在坐标轴上设置绘图区域,使用plot()函数和fill()函数分别绘制曲线和阴影区域,其中,阴影区域的透明度是由alpha()函数控制,这里的透明度为10%,另外,为了突出蓝色曲线,这里将线条粗细调整为2
第三步:
调整坐标轴并在图中标记坐标轴名称。
第四步:
使用set()函数设置图片大小为长6厘米、宽4.5厘米,并使用saveas()函数保存图片为pdf,文件名为overfitting_ms30_r10
完成以上四个步骤即可得到我们想要的多组合曲线图。
使用Matlab绘制热力图
【实例3】如何使用Matlab绘制如下图形?
第一步:
下载文件名为bias10.mat的数据并将数据读入至Matlab中,其中,数据的下载网址为
https://github.com/xinychen/academic-drawing/blob/master/heat-maps/bias10.mat
同时,使用figure()函数设置绘图字体大小为16号。
第二步:
用imagesc()函数生成热图,并设置坐标轴的标度。
第三步:
使用set()函数设置图片大小为长6厘米、宽4.5厘米,并使用saveas()函数保存图片为pdf,文件名为heat_map10
完成以上三个步骤即可得到我们想要的热图。
后 记
当我们真正掌握了某种程序语言的绘图技巧后,我们会发现:实现高质量的科技绘图实际上要耗费很大的精力,也要求绘图者具有一定的审美功底。
本文转载自微信公众号:城市数据派,如需转载请联系城市数据派。
本站声明
本文仅代表作者观点,不代表城市数据派立场;
本文系作者授权城市数据派发表,未经许可,不得转载;
本网站上的所有内容均为虚拟服务,一经购买成功概不退款,请您理解。