1200字范文,内容丰富有趣,写作的好帮手!
1200字范文 > python绘制风向玫瑰图

python绘制风向玫瑰图

时间:2020-12-18 10:05:59

相关推荐

python绘制风向玫瑰图

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

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

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

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

数学角转风向角:

(1)根据u,v获得数学角:

(2)根据数学角换算风向:%360 %360是对360取余。

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

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

数学角转流向角:

(1)根据u,v获得数学角:

(2)根据数学角转为流向:%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的方向的流是从北向南流。

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。