6 P7 ]& o" ?* A- d( n9 T 前言——针对萌新
- s8 b: a) m- p" I, T; u hello大家好,我是Marine!!!欢迎互关互粉,一起交流!
+ O+ T" @% B% V: n& Z( Z' z 看名字也知道,我的专业领域和兴趣就是海洋方面——进修方向是物理海洋。
9 c. n* ^/ F' I' Q; J 现在有越来越多的海洋高校建立,也有越来越多的高校建立了独立的海洋学院,研究海洋也成为当下科研领域的小众热门(相比而言“小众”无可非议奥)。
" F' O) k* D- B G1 n& Z. u. U 但是,就我本科四年的经历来说,真可谓是困难重重,网上物理海洋学分享出来的东西屈指可数;尤其在数据可视化方面走了很多的弯路碰了很多的壁,很多程序方面真的是扒很久才能找到适用的,因此想和大家分享一些我自己的心得与技巧,给后来新进入海洋领域的学子们一点启发。 ! F1 R7 H4 j. g8 ~
这篇文章就介绍一下我用过的物理海洋学方面的软件和体会吧! 4 }7 h( x5 T- [! j4 `+ T, ?, C
1.GrADS(又名:小乌龟)
# ]% V" P. K' g' M3 _ 最早接触是在大二做大学生创新创业项目,指导老师推荐给我们的。好像我们用的叫opengrads,因为可以在windows平台用。 # D- P4 @5 J: R
怎么说呢,这个软件上手非常快速,并且可以读取GRIB、NETCDF、二进制的数据文件,画出的图其实效果也还不错。这个我用的不多,也就刚刚入门就转战别的软件了。图标是个小乌龟哈哈哈哈,虽然这个软件我卸载了自己画的图也随着U盘丢了,但还是可以推荐一波。 5 [+ X4 y) K t
2.Matlab
: s' u3 r+ f9 e$ E0 p0 d U7 H 相信经过近期国内高校被禁用的事件,matlab的名号已经被更多人所知道。
$ r, z( a% I) d% D: \ 刚刚说我用grads时间短,就是因为转战了matlab进行数据处理与分析。这个是研究生学长推荐给我们项目小组的,也是当下在海洋领域应用最为广泛的软件(没有之一)。 ) x' B- [, R4 B6 L# o
集数据处理分析可视化一体,并且网上范例算是比较多,能够找到大量的程序资料,这是很好的一点。
0 A/ R$ b8 m) A; G 附上我毕业论文用matlab画的图 9 ^# m7 b0 l. X# E
. g& C) A! }7 T3 {! } * Z) G) A: K8 C" |, V4 o0 i
2 j7 M/ z& L0 @ % c: J9 C8 z: A# c
可以发现,matlab基本上物理海洋科研插图的类别都能解决掉,并且可视化可以具有很高的自定义效果,也就是我比较喜欢说的“出图1分钟,修图1小时”(泪目)
8 J' W+ c! a1 _# u+ K5 L4 o6 O4 C 强烈建议matlab能学就学一下,可视化方面毕竟还是一大利器。 2 }8 K5 d9 s2 |& D' o6 v
3.Panoply——基于Java的可视化软件
; d/ f- W' s* j5 k# e 这个软件是NASA出品的数据可视化软件,可以轻松得到关于netcdf、grib、hdf等多种数据存储文件内的变量信息,并创建相对应的contour图、vector图等等。我个人比较喜欢它选中变量就能快速出图,不需要像matlab那样敲代码,同时有很多好看的colormap,并且内置很多的图形调整功能,可以快速做出好看的插图。
0 |% j; I+ B8 \% [8 |& w. G' \ v5 w- ^1 ^ 在应用中感觉到唯一的不足是,如果是全球数据中选取指定区域效果很不好,建议这个软件用来大体看一下数据的分布情况(像我跑模型就可以快速查看模型输出结果的质量,不需要码出代码才能看),准确作图还是用其他软件。当然如果用的好,这个软件还是很强大的。
# L: m9 D2 D, V* [4 U6 R2 i3 s, o 8 ]( j- U8 ]7 l: H) i4 H
4.ncBrowser; h; |- C f6 D4 ]8 g
这个是我的导师一直在用的,这个和panoply我是一起用的。相较于panoply,优点是可以不停放大画出来的图片。不过这个软件好像比较旧,功能不如Panoply丰富。安装的话可能需要科学上网+FTP方式: 6 z0 x/ y f: m8 c6 w
- |3 y6 h, C) ~8 G& ~
( n9 @, O' C. M" }
5.Python1 @8 c% c, M' q6 E# S
Python现在真的是太热门了,并且Matlab禁用事件一出,我马上就决定转战python(提前预防,技多不压身!),在物理海洋领域,Python完全可以实现Matlab的功能,甚至更加出色。
- e1 I: G/ T* u& h* X6 X1 I. p% o( S& S 现在本人也仅仅是入门,相较matlab还有很长的学习之路要走。 0 T; W W9 t% \' C. H
5.1 Pyngl3 N1 n6 M9 w6 A4 f6 B
这个是大名鼎鼎的气象处理软件NCL的python移植版本,一开始NCL并没有做的很好,但目前发展势头迅猛,同时借助于python的火爆态势,相信日后也会成为流行的软件。 ) ] s U/ `/ w; q8 `9 w5 g7 F+ v6 y
我进行海洋数据处理大部分时候参考的是气象上的处理方法和程序,因为二者同作为流体的互通性兼容性很好,NCL在气象处理方面上非常成熟;同时其相对于matlab更加开放,有更多的工具包以及更高的未来发展前景,并且matlab官方的colormap什么jet,hsv够够的,又懒得自己定义多个colormap(总感觉matlab出图的色彩和细节上有问题,也不知道怎么回事) ' f5 x% B' Z5 Q( @+ Z% V( E$ |! q& e
注意!!!Pyngl和NCL都不兼容windows平台,要跑linux,学习成本会比较高!!! 9 q; L! j- i# B: f8 J; p9 U
5.2 Matplotlib
* x \: x( t2 A$ K( e" Y8 a 鉴于上面的Pyngl需要在linux下运行,Python上有一个算是matlab移植的包Matplotlib,这个是可以在windows上运行,应该解决了不少同学的烦恼吧! , j* R8 b2 V3 t) S% m$ l
matplotlib现在我只是入门级使用,更多的用Pyngl,这方面可能我不能解答问题,日后可以精进一下。
7 y! s8 B7 t5 n; v0 i 整体使用入门之后,感觉和matlab是差不多的,稍微熟悉一下日常代码就能快速上手。 ( x) u, z* n6 a; N. q
6.Origin pro2 ?5 L' V! q9 b! Y- q: G2 z& J! K5 H
这个软件和matlab一样,也是科研软件老大哥的地位了。
+ H& M5 Z( J; E 开始接触是看到很多人推荐科研向的时候有它,正好我导让我从图上扒数据下来,就抱着入门的态度安装。
o" y e, @9 E( a" M7 j9 G 进行简单的上手之后,我感觉它像Panoply的功能扩展版,既有方便的可视化也增添了很多的其他功能(比如从图上扒数据嘿嘿)。
4 a1 `% Z4 c, C" w1 l$ } 现在一般就用来扒数据和折线图的绘制...真就入个门。
- I6 k ]8 Q! Y) V* ^# E
4 K% K" ]$ k( v& ?5 m8 v+ c 7.Ocean Data View (ODV)& o* S3 H% _/ c
ODV这个软件是听我本科班主任说的,好像用的人也是非常多,除了点点点的交互界面,还提供了Java和C的API接口,画出来的图也非常不错,站位图、断面图、平面图都可以实现,最近刚刚接触,具体使用还没有弄得很懂,不过先推荐给大家!可以尝试使用!
; q5 H8 B- @" m3 K+ a$ I+ R7 N L' M $ Z; d2 I( D8 `
" A; ~+ t0 T2 i- C
9 w: z2 [* z5 ^& t, h9 H
8.Generic Mapping Tools (GMT), G! K" s% F; {$ t+ c+ [/ i7 G \4 K
GMT是我最近正在尝试用来画三维海底地形图的软件,下面评论也有同学提到了这个功能强大的软件,真的可以画很多很多很多地球科学需要的图片!我自己以后应该会是Matlab和GMT双修。 Linux下运行是最完美的(WSL),Windows下也可以用(经常有些小错,包括库丢失等问题,最好还是linux下用吧),具体安装教程可百度一下,使用可以参照官网教程以及下面这个网站:
1 C( b4 |$ {9 E N/ O( V 1 f+ q: |2 E. B4 H8 P% p1 I; ~
3 g3 d" I5 n. a2 j: L" B1 q2 M 总结
+ E; |" I& q6 ^; P/ _+ F5 T 我们学校会专门开设Matlab和GrADS课程(现在好像教ODV和Python使用了),但只是教学基础操作,在真正科研的绘图上还得靠自己多寻找多看例子,之后我个人也会多多分享我的代码和在物理海洋方面的心得体会给大家,希望能够帮助刚刚加入物理海洋学的同学们走出迷茫和无助。也希望物理海洋的大佬们也能够在在这里一起学习交流进步!
, p$ R! Z7 z6 H& J0 K, d9 o- P- v- i 我是Marine!欢迎关注“物理海洋”专栏 ,发出你在物理海洋专业的收获与经验! 9 a! d( N% n4 k0 l" ]' e
* x/ q; R6 v( _2 ]
0 N# k2 [( t: r, ^" Y C, q5 m0 `$ r) M2 m2 j) {' l" D
" }) j( {0 f" Y4 I0 U# M5 g |