python绘制风向玫瑰图

一、风向、流向角度和数学角关系。

1.数学角和风向角相互转换。

数学角向东为0°,按照逆时针旋转。

北风为0°,即指向南为0°,顺时针增加

 

 数学角转风向角:

(1)根据u,v获得数学角:\theta =arctan(v,u)

(2)根据数学角换算风向:\theta \theta =(270-\theta +360)%360        %360是对360取余。

数学角向东为0°,按照逆时针旋转。

 

流向指向北为0°,顺时针增加。

 

 数学角转流向角:

(1)根据u,v获得数学角:\theta =arctan(v,u)

(2)根据数学角转为流向:\theta \theta =(270-\theta +180)%360

二、0°风,90°风绘图检查。

0°风。

import numpy as np

import matplotlib.pyplot as plt

from windrose import WindroseAxes

import matplotlib.cm as cm

filename='D:\data\qita\wind1.txt'

sd=np.loadtxt(filename,dtype=float,usecols=1,skiprows=1,encoding='utf-8')

sp=np.loadtxt(filename,dtype=float,usecols=2,skiprows=1,encoding='utf-8')

def rose(x,y):

    fig=plt.figure(figsize=(10,10))

    ax=fig.add_subplot(111,projection='windrose')

    ax.bar(x,y,normed=True,opening=1,edgecolor='white',bins=np.arange(0,8,1),

                cmap=cm.jet)

    ax.yaxis.set_ticks(np.arange(0,11,5))

    plt.xticks(fontsize=20)

    ax.set_yticklabels(['','5%','10%'],fontsize=20)

    ax.legend(loc='lower right',ncol=3,fontsize=10)

    plt.show()

sd[0]=0

rose(sd[:1],sp[:1])

结果如图所示:

 同样,90°风检查:

根据绘制的0°风和90°风,可以看出,绘制的风向是合适的,即0°风为北风,90°风是东风。

风玫瑰图绘制。

代码如下:

import numpy as np

import matplotlib.pyplot as plt

from windrose import WindroseAxes

import matplotlib.cm as cm

filename='D:\data\qita\wind1.txt'

sd=np.loadtxt(filename,dtype=float,usecols=1,skiprows=1,encoding='utf-8')

sp=np.loadtxt(filename,dtype=float,usecols=2,skiprows=1,encoding='utf-8')

def rose(x,y):

    fig=plt.figure(figsize=(10,10))

    ax=fig.add_subplot(111,projection='windrose')

    ax.bar(x,y,normed=True,opening=1,edgecolor='white',bins=np.arange(0,8,1),

                cmap=cm.jet)

    ax.yaxis.set_ticks(np.arange(0,11,5))

    plt.xticks(fontsize=20)

    ax.set_yticklabels(['','5%','10%'],fontsize=20)

    ax.legend(loc='lower right',ncol=3,fontsize=10)

    plt.show()

rose(sd,sp)

结果如下:

 

 根据风向和风速来对整体的风向以及该风向下的风速大小有基本的认识。色标表示风速大小。扇形半径表示该方向下概率。

如果是用风向角画图,图中所示的N方向的风表示北风,即从北向南流。如果是用流向角画图,图中所示的N的方向的流是从北向南流。

  • 2
    点赞
  • 9
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值