import pandas as pd import numpy as np import plotly.express as px # 示例DataFrame df = pd.DataFrame({ 'wind_speed': np.random.uniform(3, 25, 10), # 生成100个3到25之间的随机风速值 'wind_direction': np.random.uniform(0, 360, 10), # 生成100个0到360之间的随机风向值 }) # 将风向划分为16个区间 df['wind_direction_bin'] = pd.cut(df['wind_direction'], bins=np.linspace(0, 360, 16), labels=False, right=False) # 将风速按范围[3, 25)划分为区间,每3m/s为一个步长 df['wind_speed_bin'] = pd.cut(df['wind_speed'], bins=np.arange(3, 26, 3)) # 计算每个风向和风速区间的频率 wind_rose_data = df.groupby(['wind_direction_bin', 'wind_speed_bin']).size().reset_index(name='frequency') # 绘制风玫瑰图 fig = px.bar_polar(wind_rose_data, r='frequency', theta='wind_direction_bin', color='wind_speed_bin', template='plotly_dark', color_discrete_sequence=px.colors.sequential.Plasma_r) fig.show()