| 12345678910111213141516171819202122232425 |
- 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()
|