写了个matlab学位论文绘图美化工具

转自:http://www.jianshu.com/p/ec82162d20d4

动机

对于理工科的同学,学位论文里通常有大量图片,大多数需要通过matlab来绘制,但是基本的matlab语句用起来不方便,例如贴图到word里发现字体特别小之类的。

解决方案

为提高效率,开发了matlab绘图辅助工具,解决了以下痛点:

1. 图片标题、坐标轴标题、字体、以及图片宽度统一设置

一行代码实现:

utilForFormat.dissertationPlot('标题字符串','x轴标题','y轴标题',7.5);

其中7.5是图片宽度,单位cm。

绘制之后可直接贴到word中,避免手工调整的繁琐以及调整后图中字体大小不正确的问题。

例如本人学校的论文模板,页边距之内的宽度大约为16cm,那么可以设置10cm的图占据一行,或者设置7.5cm的两张图并列占一行。贴图后字体大小都一样,非常美观。

字体的话默认是宋体10pt加粗,符合学位论文要求。如果要修改默认字体,可以这样设置:

utilForFormat.setDefaultFont('宋体', 10, 'bold');

设置一次即可后面都会按这个来,原理是把设置的值存储到了utilForFormat对象中了。

2. 多曲线在同一张图中,实现不同曲线自动设置不同样式

在matlab中,曲线样式由颜色(color)、线型(line)和标记(marker)组成。在曲线很多的时候,如果手工设置逐个曲线的样式的话将非常繁琐。

为此,设计了一个辅助函数实现曲线样式的自动生成(280种样式),而且可通过简单设置参数'cml'或者'lcm'等实现优先级的选择,代码如下:

labelsForPlotLine = utilForFormat.labelsForPlotLineGnrt('cml');
% 'cml': 先color,再 marker最后 line的顺序生成曲线样式
% labelsForPlotLine 为不同样式组合的元胞数组

其中,labelsForPlotLine 是元胞数组,每个元素代表不同样式的字符串,效果如图:
曲线自动样式

3. 固定宽度时,二维图边缘的空白问题

可能是matlab的bug,在对二维图直接设置宽度时,会导致边缘出现空白,那么实际上图片实际宽度是缩小了,未达到所设置的宽度,如图:
二维图的边缘空白问题

为此,专门写了一段代码修复了该问题,效果如图:
二维图边缘空白修复效果

4. 绘图后图片自动在电脑屏幕的中心

前文的dissertationPlot函数调用之后图像自动居中,治好了我的强迫症。

5.彩蛋:本工具全国使用情况统计功能

如果你好奇今天至少有多少人在陪自己写学位论文,这些人在全国的分布情况是怎样的,可以使用下统计功能(利用cnzz.com提供的服务),数据是公开的,实时更新,大家可以在http://new.cnzz.com/v1/login.php?siteid=1254502417 里查看(访客分析->地区\运营商)。数据可能长这样:
全国使用情况示意图

该功能很安全,只是通过matlab来浏览某个网址实现的(在UtilForFormat.m文件的27,28行)。如果你不想被统计,可以关闭该功能,很简单,把

utilForFormat = UtilForFormat('on');

里的on改为off即可。

下载地址和用法

下载地址https://github.com/ztinpn/utilForFormat/archive/master.zip
Github项目地址https://github.com/ztinpn/utilForFormat
用法:UtilForFormat.m是工具类文件,拷贝到自己的项目目录下。demo.m是示例代码,使用的时候,把里面对应的代码段复制到别处使用即可。
注意:复制图片前需要保证copy options已选择preserve information,transparent background
以及match figure screen size

最后,祝大家顺利毕业哈!

全部评论
很给力,有绘图清晰度和分辨率的调整么?
点赞
送花
回复
分享
发布于 2017-11-20 18:03
mark
点赞
送花
回复
分享
发布于 2017-11-20 18:22
滴滴
校招火热招聘中
官网直投
mark
点赞
送花
回复
分享
发布于 2017-11-30 20:09
mark
点赞
送花
回复
分享
发布于 2017-11-30 20:24
楼主给力
点赞
送花
回复
分享
发布于 2017-11-30 20:28

相关推荐

点赞 31 评论
分享
牛客网
牛客企业服务