使用 Windrose 库在 Python 中绘制风玫瑰图

Plotting a wind rose in Python using Windrose Library

我有风数据,包括风速和风向。

然而,我的风向定义为逆时针方向。意思是,我的数据的 45 度实际上是 NW。

是否有机会在 Python 中使用 Windrose 更改此设置?

我有以下代码来绘制 Windrose:

from windrose import WindroseAxes
import matplotlib.pyplot as plt

theta = [0, 60, 120, 180, 240, 300]
speed = [10, 0, 10, 40, 50, 40]

ax = WindroseAxes.from_ax()
ax.bar(theta, speed)
plt.show()

风玫瑰的方向由 theta 列表决定。如果 90° 不在您希望的一侧,您可以将所有 theta 角转换为相反的角度,从而创建原始图像的镜像。

假设您的原始代码如下。

from windrose import WindroseAxes                                                                                                                                                                                                                                                                                                                                                                                                                                                            
import matplotlib.pyplot as plt                                                                                                                                                                                                                                                                                                                                                                                                                                                              

theta = [0, 90]                                                                                                                                                                                                                                                                                                                                                                                                                                                                              
speed = [10, 10]                                                                                                                                                                                                                                                                                                                                                                                                                                                                             

ax = WindroseAxes.from_ax()                                                                                                                                                                                                                                                                                                                                                                                                                                                                  
ax.bar(theta, speed)                                                                                                                                                                                                                                                                                                                                                                                                                                                                         
plt.show()

这向您显示了一个图形,在东方有一个条形,而您想要在西方(或相反)。

如果你采取相反的角度,你交换图形。以下代码将为您服务。

from windrose import WindroseAxes
import matplotlib.pyplot as plt

theta = [0, 90]
theta = [360 - x for x in theta] # Take the opposite angle
speed = [10, 10]

ax = WindroseAxes.from_ax()
ax.bar(theta, speed)
plt.show()