收藏本站 劰载中...网站公告 | 吾爱海洋论坛交流QQ群:835383472

[数据处理] 风玫瑰图的绘制--matlab在科研中的应用

[复制链接]
                                                                                                   

第13期,和大家讨论一下风玫瑰图的绘制。

风玫瑰图(Wind Rose)是气象学中描述风速和风向发生频率的图。由于风是矢量,常用的统计量如平均值、中值等可能错误地描述风速和风向在一段时间内的特征,比如反向风可能相互抵消,东北风(45°)和西北风(315°)的平均值为南风(180°)等。使用风玫瑰图,用概率来描述各风向、风速区间风的出现频率,可以避免这些问题,从而更准确地描述风在一段时间内的特征。

支持绘制风玫瑰图的工具有很多。NCL中提供WindRoseBasic等命令来实现;python的windrose库也可以绘制不同风格的风玫瑰图;R语言的windRose命令也可以提供类似操作。我最习惯使用的是MATLAB的WindRose工具箱,以下对其进行具体介绍。

WindRose工具箱由Daniel Pereira编写,至该推文撰写日,最后一次更新是在2020年3月5日,其最新代码和说明文件可从以下link下载:

https://dpereira.asempyme.com/windrose/

该工具箱的使用方法比较简单,只有WindRose一句主命令。具体语法为:

* Z1 Z7 W, l5 _1 `* u

  • : P0 u- V/ _( G$ h. \7 k! N2 S" K' l& L* y9 G

[figure_handle,count,speeds,directions,Table] = WindRose(dir,spd,Options);9 w- ?% V4 Y0 q+ o

* d! \" C( D) v$ }. v8 O

该命令中,输入量有三个:dir为风向时间序列(0-360,气象标准,0代表风从北方吹来,度数顺时针增大);spd为风速时间序列;Options为与图相关的各项设置,变量类型为Cell。Options内包含的设置选项非常多,比如风速、风向区间,colormap,文本及坐标标记,中心零风速设置,多图摆放等等。具体内容参考工具箱说明文件。

输出量有五个,使用场景不多,主要用于数据检查。figure_handle为图句柄,之前figure的所有设置参数都会保存在这里;count为矩阵,保存不同风向、风速区间风的出现频率;speeds为向量,保存风速区间分段的临界值;Table则以表格形式,具体记录的风玫瑰图中各个数值,适合检查错误。

以美国东海岸Nantucket Sound的风场观测为例。从美国NDBC的网站可以下载到该海域浮标44020在2010至2019年间的十年风场观测资料,在进行简单处理后,我们可以使用以下命令对2010-2019十年间44020站风场数据绘制风玫瑰图。由图我们可以直观的看到,该区域风速主要在4-12m/s,西南风居多。


  s6 y- ~4 C$ ~7 V2 v2 r8 {

  • $ j2 }! A) N: B0 w+ \! i

  • 8 `, |& {  V  j
  • / p& k8 K. ^* s7 b1 }
  • 9 S3 m% ?# t) M) k
  • 0 z6 O7 U3 G6 d5 q0 E( U* g; }/ h: D

  • 9 ~: U/ y$ o" V6 Z3 f

  • - T2 w' }; E4 \

  • : \+ G, x; R' r  a6 Q0 f

  • " Q0 \+ i4 y7 d' [

  • + M# c: B! e% I- Q. V
  • " |0 A- `& x* N" n  L7 {

    0 |) c2 @4 l1 A- u  y' {' N

Options = {'anglenorth',0,...           'angleeast',90,...           'labels',{'N (0^o)','NE (45^o)','E (90^o)','SE (135^o)','S (180^o)','SW (225^o)','W (270^o)','NW (315^o)'},...           'freqlabelangle','auto',...           'MaxFrequency',6,...           'nFreq',6,...           'vWinds',[0 4 8 12 16],...           'LabLegend','Wind Speed (m/s)',...           'legendtype',2,...           'titlestring',''};[figure_handle,count,speeds,directions,Table] = WindRose(dir,spd,Options);  n, r( y4 ?# w5 p* z! l, ~6 }

8 P6 `! a2 x( n) _

8a53a731c1714e1c0ef30b7de9c58093.png

( Z$ [4 H9 x+ N; w4 a+ n

另外,该工具箱还很好地整合了MATLAB中subplot命令,进而在一张图中画多张子图。比如,对10年的风场数据按照季节分开,使用以下命令,可以绘制该海域不同季节的风场特点。可以看到,该海域夏季多西南风;冬季多西北风,且风速较大。


  • 4 O/ [0 n+ s! e6 q/ H9 d1 O$ W: x
  • # u1 g" d6 _# o) R, r

  • 1 ?: T. S. }+ T; f8 z

  • 8 F+ V. L! g( @# V; h6 S

  • ! _4 P: f0 w  W/ Z, j
  • 1 e- B" F, M% i$ B4 h$ V3 A: ]% p# @

  •   e- s" X0 W3 g/ ~
  • ) f1 B0 q( [: D; h: ^

  • 0 a" K( f+ ]8 K4 S( z; W" I
  •   v$ z; \: a% S9 e8 p

  • ! L8 _2 ~- i8 w. M$ ?% ]

  • . }5 f: p/ k5 {0 F
  • 6 j) Q4 A0 ]6 l' {% B0 J
  • : m$ _0 W. ]( H9 D; P1 G

  •   s: I& q/ E# x% G: }' ~6 ?+ H$ D+ a/ F

figure('color','w')Options = {'anglenorth',0,...            'angleeast',90,...           'labels',{'','E','S','W'},...           'freqlabelangle','auto',...           'min_radius',0.25,...           'vWinds',[0 4 8 12 16],...           'MaxFrequency',8,...           'nFreq',4,...           'LabLegend','Wind Speed (m/s)',...           };[figure_handle,count,speeds,directions,Table] = WindRose(dir_spring,spd_spring,[Options,{'titlestring','Spring'},{'legendtype',2},{'axes',subplot(2,2,1)}]);[figure_handle,count,speeds,directions,Table] = WindRose(dir_summer,spd_summer,[Options,{'titlestring','Summer'},{'legendtype',0},{'axes',subplot(2,2,2)}]);[figure_handle,count,speeds,directions,Table] = WindRose(dir_autumn,spd_autumn,[Options,{'titlestring','Autumn'},{'legendtype',0},{'axes',subplot(2,2,3)}]);[figure_handle,count,speeds,directions,Table] = WindRose(dir_winter,spd_winter,[Options,{'titlestring','Winter'},{'legendtype',0},{'axes',subplot(2,2,4)}]);3 M% K/ {8 t4 }' V! }2 }) Q4 E8 M


" Q. |" H3 j) u9 S/ H, v

a4233c6157b36da13a7ab921684eebf4.png

Tip:

在画多图时,最好在画图前先使用


9 ^; z6 d1 a, }# L
  • ( Z* L% @, Y9 O% _' ?
    ( R6 R0 x+ \1 ^( I( D7 P' l1 t( ~6 ?$ Y

figure('color','w')
/ A/ `0 U# k/ Y5 c3 J

5 p" D' B  A8 d* t4 B

否则,第一张分图和legend部分可能会变成MATLAB默认画图底色(一般为灰色)。Options中有figcolor选项来更改图底色,然而我测试时依然有上述bug。如果你也遇到相同问题,不妨尝试该方法。

Reference:

浮标数据:

https://www.ndbc.noaa.gov/station_history.php?station=44020

各语言中风玫瑰图的相关命令介绍:

https://www.ncl.ucar.edu/Applications/rose.shtml

https://pypi.org/project/windrose/

https://www.rdocumentation.org/packages/openair/versions/2.7-2/topics/windRose

https://dpereira.asempyme.com/windrose/

               
- P$ \5 e% [6 ?  `0 z$ f
回复

举报 使用道具

相关帖子

全部回帖
暂无回帖,快来参与回复吧
懒得打字?点击右侧快捷回复 【吾爱海洋论坛发文有奖】
您需要登录后才可以回帖 登录 | 立即注册
原来可以笑
活跃在昨天 15:10
快速回复 返回顶部 返回列表