test.py 998 B

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