收藏本站 劰载中...网站公告 | 吾爱海洋论坛交流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一句主命令。具体语法为:

, c' o" S. ~6 r" i5 @/ A
  • ' _5 x9 T( B2 E
    * b* }  ~2 J, Z, h4 W! \

[figure_handle,count,speeds,directions,Table] = WindRose(dir,spd,Options);
: A9 z; W! g9 o* X% l7 p, J: t

2 i! d. K' C1 t" Z1 x1 o1 T

该命令中,输入量有三个: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,西南风居多。


1 j6 q  O% P4 N& D' y6 C

  • : F6 X7 h, e. z( x* X/ R- a3 Y
  • ; ^8 C: \) u4 l+ n+ Z
  • ) }0 a) L' f1 q) c
  • # P; H# t( u6 O* D: D1 T8 v7 ^

  • % g  J6 l. _7 f. z3 J6 \) h
  • ( K; n0 ]+ F7 R6 q; m

  • & p* T3 ?9 _6 Y7 f6 b! M
  • / W; l7 z# ]! f; \2 ]' ^/ X
  • . u! z* W. I+ d0 e5 f
  • 6 g/ N3 P2 w" L) @/ P  m/ r# M: {
  • 6 ?; M. R. l2 W0 H- X

    7 a8 f$ |" U1 K: K

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);, i( O) N6 \5 p, W7 n7 E' B


% G$ {. R, M& I

8a53a731c1714e1c0ef30b7de9c58093.png


; a- k, l# t" g. ?- ]

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


  • 1 j) O+ f6 {  k! A! k+ P
  • % l; `  b: h0 ~

  • ; E" Z) q+ g8 A
  • # J* I* w+ I$ E9 D8 L

  • ) Q& c! ^% |5 Y0 t% B* c% k
  • # g' P. E; b2 c* f- R! \
  • # c/ \1 E0 J) }

  • 3 m# O0 z1 [7 r- u. j. R
  • % |9 {% M. R5 r4 F8 a* b4 n
  • % M' J* R6 `6 u

  • # f* v. o( X0 V' T  `% i
  • , ?# [5 ^4 @# k* T; @

  • ! H' D! G. P7 w% G# f

  • 5 [5 E& F: Y5 v! x
  • 3 ~9 ^, D; \7 F- I3 C, }: `- A

    ' `8 E6 m5 i6 G0 @& i

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)}]);- p1 D5 [# H5 q5 o& w  s


, {& S' _/ P* a. H1 i; u

a4233c6157b36da13a7ab921684eebf4.png

Tip:

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


/ T  H( \: C2 ]7 D2 O- }2 I

  • / J# S3 u" ^  T$ k# |# A/ v% y, p$ a4 `& J! a

figure('color','w')* J( r8 d& `* r5 ]% D: N


7 t% D5 b2 D$ o

否则,第一张分图和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/

               
# G  c4 }4 _9 g
回复

举报 使用道具

相关帖子

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