matlab怎么画二维热力图_绘图指南:如何用Matlab画出酷炫的论文插图?

【本期看点】

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

本期投稿

4decd899d9f54fc1b08277f92bff4b70.png

作者: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》为例,下面是这篇论文中两幅插图。

a51c0880137de059d63f9ada98c1368b.png

▲ 贝叶斯增强张量分解模型显性参数的估计值规律

00f44d7cedbceb7efc046d51bded37d6.png

▲ 贝叶斯张量分解在每次迭代过程中的绝对误差和下界值

使用Matlab绘制多组合曲线图

【实例1】如何使用Matlab绘制如下图形?

f5c557ac94c8daeba17a8907a4934b78.png

【绘图过程】绘图过程分由如下几步组成。

第一步:

下载文件名为mu10.mat的数据并将数据读入至Matlab中,其中,数据的下载网址为

https://github.com/xinychen/academic-drawing/blob/master/curves/mu10.mat;同时,使用figure()函数设置绘图字体大小为16号。

a2712c64ea9b628cf8fa4f560506580d.png

第二步:

在坐标轴上设置绘图区域,使用plot()函数和fill()函数分别绘制曲线和灰色区域,其中,灰色区域的透明度是由alpha()函数控制,这里的透明度为20%,另外,为了突出红色曲线和虚线,这里将线条粗细调整为2.

0545eea246d1850f3159dd6b61cfeac4.png

第三步:

调整坐标轴并在图中标记曲线的名称。

999c608b5fc9ab3764cad21e733af87c.png

第四步:

使用set()函数设置图片大小为长6厘米、宽4.5厘米,并使用saveas()函数保存图片为pdf,文件名为mu_curve10

49179cf854a714cd5b0297c6e377dfbf.png

e5e203a25af443727d2cd749a09e61ce.png

完成上述四个步骤即可得到我们想要的多组合曲线图。

【实例2】如何使用Matlab绘制如下图形?

f1f5f9e7a31e9c8c0adf4532a811f7ac.png

第一步:

下载文件名为BCPF_fiber_rmselb_m30_r10.mat的数据并将数据读入至Matlab中,其中,数据的下载网址为

https://github.com/xinychen/academic-drawing/blob/master/curves/BCPF_fiber_rmselb_m30_r10.csv

同时,使用figure()函数设置绘图字体大小为16号。

4e6ed8b0fdc92816cf93adb6a73eb169.png

第二步:

在坐标轴上设置绘图区域,使用plot()函数和fill()函数分别绘制曲线和阴影区域,其中,阴影区域的透明度是由alpha()函数控制,这里的透明度为10%,另外,为了突出蓝色曲线,这里将线条粗细调整为2

410d611aef123ececc2c57f8c9f06d96.png

第三步:

调整坐标轴并在图中标记坐标轴名称。

825aa457b2a2be55e8ff0980a08c4498.png

第四步:

使用set()函数设置图片大小为长6厘米、宽4.5厘米,并使用saveas()函数保存图片为pdf,文件名为overfitting_ms30_r10

adb360fb558587f6529d70f10cf76f4e.png

完成以上四个步骤即可得到我们想要的多组合曲线图。

使用Matlab绘制热力图

【实例3】如何使用Matlab绘制如下图形?

5c60505ce715f23c9b0b9962e92d2a57.png

第一步:

下载文件名为bias10.mat的数据并将数据读入至Matlab中,其中,数据的下载网址为

https://github.com/xinychen/academic-drawing/blob/master/heat-maps/bias10.mat

同时,使用figure()函数设置绘图字体大小为16号。

16726e414fa4086d41208d961a41520b.png

第二步:

用imagesc()函数生成热图,并设置坐标轴的标度。

b1643b7076aea8dc429c8c92d7716af5.png

第三步:

使用set()函数设置图片大小为长6厘米、宽4.5厘米,并使用saveas()函数保存图片为pdf,文件名为heat_map10

15d3936704e2e95ca230548c0cb7b455.png

完成以上三个步骤即可得到我们想要的热图。

后   记

当我们真正掌握了某种程序语言的绘图技巧后,我们会发现:实现高质量的科技绘图实际上要耗费很大的精力,也要求绘图者具有一定的审美功底。

本文转载自微信公众号:城市数据派,如需转载请联系城市数据派。

本站声明

本文仅代表作者观点,不代表城市数据派立场;

本文系作者授权城市数据派发表,未经许可,不得转载;

本网站上的所有内容均为虚拟服务,一经购买成功概不退款,请您理解。

  • 14
    点赞
  • 98
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值