动机
对于理工科的同学,学位论文里通常有大量图片,大多数需要通过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
最后,祝大家顺利毕业哈!