一、风向、流向角度和数学角关系。
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的方向的流是从北向南流。