%写在前面
这篇文章的初衷,旨在大家一起交流讨论学术相关的技术问题。有任何错误和更有效的方法十分非常极其欢迎?!
由于本人是geology相关专业的,所以涉及的例子都会以地球化学数据为主。其他方向的读者(如果有的话。。)可以自行参考类推一下。
为什么要学习用matlab或者python处理数据和做学术相关的工作?
1. 不用进illustrator或者coredraw改图了!
2. 做数值模拟相关的工作超方便!
3. 你们打开一个超大的excel处理数据不卡么?翻数据累不累?作图选点很爽吧!
4. 因为......超酷啊!
5. …太多了
第一篇试水的文章,大家觉得有用或者可以学到东西就行!
今天来讲matlab的最最最基本数据导入和基本的散点图。为什么直接开始数据导入?无数个从介绍数据结构,代码语法的文章都读了是不是还没法开始?int,double,float,:;%是不是和从开始背abundant一个味儿了?
所以如果可以正确有效的把我们工作相关的数据导入到程序里,万里长征已经走完一半了!
%准备工作
废话不多说,你只需要准备两个东西就可以愉快的在matlab里耍了:
1. Matlab。(本人用的2019a,有条件的同学可以用最新版的,a和b版本的区别我从来没有了解过,有感兴趣的可以去了解了解。另外国内的朋友们可以以各种方式打开matlab,国外的朋友们可以试试用自己的邮箱注册,如果校方有和mathwork合作的话是可以拿到官方正版academic use的)
2. 你的数据.csv。.xls格式的文件(也就是最常用的excel格式)可以使用,但是官方文档上显示不推荐。
准备好这两样我们就可以工作啦!
使用的数据是我自己编的,数据大家看看就好。界面使用在这里就不赘述了,毕竟是一趟高速列车啊!网上有很多图示非常清晰。唯一需要注意的是,matlab相关的文件一定要放在一个子文件夹里。意思就是说,matlab会让你选择一个文件夹作为你的工作区(current folder),你要把你的代码,你的数据都放在这个文件夹里。并且之后你用matlab做的图也都可以保存在那个文件里。按照工作习惯,可以把每个要做的项目分别建文件夹,方便管理。
%Getting Started
选择new script添加第一个script后界面如下:
左侧current folder是保存你目前所有的工作文件的地方
Workspace会显示你导入的所有的变量
Editor是你写代码的地方
Command window是运行matlab时,所有的运算都会显示在里面,并且也可以直接在里面写代码,后面会提到。
按照规矩,本篇代码示例总览如下
%Script准备工作
首先,每个script都要有的开头
这三行代码在你每次运行的时候都会清除之前所有的数据和未关闭的图表,clear all是清理工作区的数据导入,close all是关闭未关闭的图表,clc是清理你的command window。至于;要不要加,我自己是经常忘记,不加matlab会提示你,但是在实际工作过程中我还没有遇到不加;报错的情况。
%数据导入
最基本的导入语句是
var=readtable(‘filename.csv’)
这样你的表格就导入到matlab里了。点一下run(运行)就会在workspace区里显示你的变量test,是一个表格,双击也可以在Matlab里打开查看数据
最基本的数据导入已经完成了,你的新世界已经打开了!
%数据选取
接下来我们怎么选数据呢?
用var.xxx来读取每一列的数据,比如我想读SiO2的数据,就可以用test.SiO2。同时matlab区分大小写,注意与原csv文件里的大小写保持一致。这里有一个快捷键,当你输入test.之后(注意那个.点!)点一下键盘的tab键。没错,就是左shift上面那个。会显示出这个变量下所有列的名字,所以你可以输入test.s然后点tab,如果你没有其他以s开头的变量,SiO2就会自动填充~。
到这里,你已经完成matlab最基本的数据导入到读取啦。
%散点图
接下来开始做散点图(scatter)
最基本的代码是
scatter(x,y)
写好下面的代码后点一下运行,就得到最基本的散点图了
然后作为对于颜色格式非常挑剔的我,十分有必要的修饰一下,基本的格式解释如下:
scatter(x,y,size,’o’,’filled’,’MarkerFaceColor’,’r’,’MarkerEdgeColor’,’k’,’Displayname’,’Na_2O’)
scatter(坐标,大小,图例,填充,填充颜色,图例名称)
在最开始的示例中,如果你不想每行代码写的那么长,可以用‘…’来另起一行。
完成这行代码你已经可以看到你的Na20含量随MgO变化的散点图了。
如果你还想再加一个主量元素,需要在第一个投图下面加上‘hold on’来保留matlab投好的第一个图,不然会被第二个图覆盖,不信你试试。
于此,最基本的作图方法你已经掌握了!
%结尾
后面就是根据自己的需求加上一些修饰,比如grid,图例,横纵坐标名字等。用到的代码分别如下:
grid on
box on
xlabel('MgO')
最后输出把你的图按照pdf可以用illustrator修改的方式导出
print(f1,’filename’,’-r300’,’-pdf’),其中-r300是指输出按照300ppi的清晰度导出,也是投稿需要的最低分辨率。
在这篇结束前,分享几个matlab增加效率的方法
1. 习惯用%%来把你的代码分区:在示例中我们可以看到我用了%%将代码分成了各个不同的区域(section),这个时候如果你想运行每个区的代码就不需要点运行run了,可以直接点击run section(macos快捷键是command+enter),来单独运行这个section的代码,效率显著。但是每个%%后面增加描述的时候需要加一个空格,加几个空格都行,即%% 此处有空格start a figure
2. 喜欢在代码中加备注的可以用%加你的备注
3. 其实matlab也提供不需要每次点击运行的方法,你可以直接在最底端的command window里面输入代码,然后点击enter即可运行,这点在你修饰或者想暂时看一些数据效果的时候非常好用,如下图:
试试写好后敲击一些enter会出现什么?熟用这个方法可以节省很多时间。
4. 在做每个图之前要用fx=figure(x)来设置你图片的序号,这样在导出的时候也可以选择要导出的图。
5. 由于matlab默认的颜色都比较惊艳,各位可以用下面的网址来选取颜色,写入的格式和最开始的示例一致即可:
https://www.rapidtables.com/web/color/RGB_Color.html
6. 习惯查找英文官方文档,很多最新的方法也都更新在英文版里
好了,那么你准备好打开matlab了么
最后如果文章阅读数过1000的话就会更新下一篇啦,有任何疑问和错误纠正尽情留言,希望各位多多交流,多多支持!
使用的test1.csv文档也附在这里。注意数据格式尽量保持一致
链接:https://pan.baidu.删删删com/s/10Alg1_YLmzisZ0JVqFRKhQ 密码:acql
%参考链接
https://www.mathworks.com/help/matlab/ref/scatter.html
https://www.mathworks.com/help/matlab/ref/grid.html
https://www.mathworks.com/help/matlab/ref/xlabel.html
https://www.mathworks.com/help/matlab/ref/legend.html
https://www.mathworks.com/help/matlab/ref/hold.html
欢迎扫码关注