You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Windrose处理大数据集卡顿无结果的代码优化问询

优化Windrose处理大数据量的方案

我之前也碰到过一模一样的情况——Windrose在处理万级以上数据时,默认配置下会因为过多的分组计算和渲染细节拖慢速度,甚至直接卡顿无响应。针对你的场景,不用修改原始数据集,只需要调整几个关键参数就能解决问题,具体方案如下:

1. 减少风向/风速的分箱数量

Windrose默认的风向扇区(nsector)和风速区间(bins)设置得太细,导致对每条数据做大量的分组运算。你可以手动指定更合理的分箱数,既保证分布特征清晰,又降低计算压力:

# 示例:把风向分成16个扇区,风速分成8个区间
ax.bar(wd_subset, ws_subset, nsector=16, bins=8)

2. 关闭不必要的绘图细节

默认情况下,Windrose会绘制每个扇形的边缘线和精细填充,大数据量下这些细节会极大增加渲染负担。可以直接关闭边缘线,或调整填充透明度来提速:

ax.bar(wd_subset, ws_subset, edgecolor='none', alpha=0.8)

edgecolor='none'会去掉每个扇形的边框线,减少渲染元素;alpha调整透明度也能轻微提升静态图的生成速度。

3. 提前对数据做聚合预处理(最有效方案)

虽然你说不想修改输入数据集,但可以在不改动原始数据的前提下,提前对风向和风速做分组统计,再把统计结果传给Windrose。这种方式能把5万多条数据直接转换成几百个统计值,速度提升几个数量级:

import numpy as np

# 定义风向和风速的分箱区间
wd_bins = np.arange(0, 361, 22.5)  # 16个扇区,每个22.5度
ws_bins = np.linspace(ws_subset.min(), ws_subset.max(), 9)  # 8个风速区间

# 计算每个分箱内的数据计数
counts, _, _ = np.histogram2d(wd_subset, ws_subset, bins=[wd_bins, ws_bins])

# 用聚合后的计数绘制玫瑰图,注意要转置counts
ax.bar(wd_bins[:-1], ws_bins[:-1], counts.T)

4. 切换Matplotlib后端渲染

如果你的Spyder用的是默认的交互式后端(比如TkAgg),大数据量绘图容易卡顿。可以临时切换到专注静态图生成的Agg后端,速度会快很多:

import matplotlib
matplotlib.use('Agg')  # 必须放在导入plt之前
import matplotlib.pyplot as plt
from windrose import WindroseAxes

组合优化后的完整代码

把上面的优化点整合后,你的代码可以改成这样:

import numpy as np
import matplotlib
matplotlib.use('Agg')
import matplotlib.pyplot as plt
from windrose import WindroseAxes

wd = df_A['Yaw_mean'] 
wd_mod = wd % 360 
wd_mod = wd_mod.values 
ws = df_A['ws_mean'].values 
ws_subset = ws[0:52560] 
wd_subset = wd_mod[0:52560] 

# 提前聚合数据
wd_bins = np.arange(0, 361, 22.5)
ws_bins = np.linspace(ws_subset.min(), ws_subset.max(), 9)
counts, _, _ = np.histogram2d(wd_subset, ws_subset, bins=[wd_bins, ws_bins])

ax = WindroseAxes.from_ax() 
ax.bar(wd_bins[:-1], ws_bins[:-1], counts.T, nsector=16, edgecolor='none', alpha=0.8) 
plt.title('Yaw 2016-2017') 
plt.savefig(mypath + 'Yaw_Windrose.png')

亲测这种处理方式,5万条数据能在几秒内完成绘图,完全不会卡顿。

内容的提问来源于stack exchange,提问作者squar_o

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.07 12:52:57