Hello 大家好 我是正在物理海洋学摸爬滚打的Marine! 在写完第一篇文章后,我建立了属于“物理海洋学”的专栏,希望渐渐之后能有更多“同道中人”的加入哟!
第一篇文章,分享给大家一些我经常使用的物理海洋专业可视化的软件,只是粗略的介绍了他们的特点和使用方式(是鼠标操作就行,还是要编程实现) 之后一段时间的文章,可能会不定时的给大家更新一些绘图过程中的新技巧和心得,能够帮助大家解决所遇到的问题或者启发出更好的绘图思路。 那我们就开始第一弹的分享吧!最近有比较繁重的绘图任务,还是以最熟悉拿手的Matlab进行可视化和分析,所以第一弹是Matlab的分享。
说实话,matlab官方的东西吧真的是一言难尽(最仇恨官方寥寥可数的colormap),但是会有各路大神写出的function包供我们使用,对于物理海洋学而言,我最最最常用的就是两个:m_map和sea_water,两个包都能在百度就能找到对应的资源(可能需要科学上网)。 一、Sea_water包先说sea_water是专门用来计算物理海洋各种基本物理量的,包括位温、位密、海洋内部压强等等,基本过程就是矩阵输入物理量,再计算输出所得物理量矩阵,一行程序就行,非常方便实用。 最近没怎么用这个,因为模型输出的结果,分析过程基本不需要用它运算什么,但是保持安装状态,毕竟物理海洋离不开这些基本物理量的。 有需要这个包的现在可以私信我,或者等以后整理出来弄成个网盘链接放上。 二、m_map包这个包!我自己最近1000行程序能占200行不过分!但凡你需要画海岸线区分陆地海洋,这个包就非常适用! m_proj('miller','lon',[105 136],'lat',[15 41]);m_coast;m_grid;+ Y4 n0 y' O! _$ Y1 H6 N4 r2 g
上面这是最最基本的用法,‘miller’是地图投影方式,可选的有挺多的,m_coast是绘制海岸线,m_grid是添加网格,画出来就像下面这样 但是!是不是觉得好丑!因为自带的m_coast精度太低了,画出来就很不专业的感觉。 后来我在网上找到了绘制高精度海岸线的方法,就是把m_coast换成m_gshhs(下面就是链接) m_proj('miller','lon',[105 136],'lat',[15 41]);m_gshhs('fc1','patch',[.7 .7 .7],'edgecolor','none');m_grid('box','fancy');
! S9 Y% ] N9 N+ c: u% ^! ^/ x边框,经纬度显示范围,陆地海洋的颜色都是可以用程序进行控制的,俗话说的好:“出图一分钟,修图一整天”。好像还可以画省界线,但是我用不到咯。 m_map包里面有m_plot,m_pcolor,m_contour等等,配合meshgrid,以经纬度格点绘制地球数据,实在是可视化必备良包! 三、colormap这是我吐槽matlab最多的地方,官方的实在是少得可怜,也不怎么好看。画的图多的情况下,一点一点自定义出来colormap矩阵着实非常浪费时间。那么我就给大家推荐由网络大佬整理的来自ncl、panoply、matplotlib等等绘图软件提取出来的colormap矩阵大全! 大佬简直救我于水火之中,好东西当然要分享给学物理海洋的大家康康!下面还只是一部分哦
马上开学,最近事情多的有点头秃。这一段时间用matlab 感觉最有用方便的东西就是上面这三者,尤其是第三个colorbarmap爱了爱了。 对于数据各种可视化,出图真的非常容易,但是调整图非常重要,比如有些现象换一个范围的colorbar就会非常明显,做出一幅好图真的需要非常精细的调整才行。 以后还会不定期写一写自己在物理海洋方面的小心得,欢迎大家来“物理海洋”专栏多多交流沟通,发表自己在物理海洋这个专业领域的一些见解与心得。 |