Windrose包绘制风向玫瑰图时绘图数值与预期不符的问题排查
风向玫瑰图数值与预期不匹配的核心原因
分箱逻辑错位(最核心的偏差来源)
windrose库在绘图时不会直接按照你传入的离散风向值做一一映射,而是会对所有输入风向值执行强制圆周分箱聚合:
- 库默认将360度圆周均匀划分为16个等宽扇区,每个扇区宽度为22.5度,扇区边界固定对齐0°、22.5°、45°……337.5°的位置。
- 你输入的离散风向值间隔为20°,和库默认的22.5°扇区宽度不匹配,会导致多个独立统计的相邻风向样本被合并到同一个扇区内做计数,最终单扇区的累计样本数远高于你按单风向计算的预期值——也就是你看到的270°对应数值达到105的来源,该扇区实际合并了270°、290°两个独立风向的全部样本计数,而非仅统计270°的样本。
展示逻辑认知偏差
- 你手动计算的各风向占比,是以310°风向的样本数为基准做的相对归一(将310°的计数映射为100),但
windrose库的径向轴默认展示原始绝对样本计数,不会自动按照你自定义的相对比例调整刻度映射。你看到的扇区长度对应的数值,是分箱合并后的绝对样本数,和你计算的单风向相对值不存在直接对应关系。 - 由于默认分箱的扇区边界和你输入的风向值存在偏移,原本属于310°扇区的边缘样本也可能因分箱规则被划入相邻扇区,进一步放大计数偏差。
修正方向
- 绘图时手动指定分箱参数,匹配你实际的风向间隔:在调用
ax.bar()时传入分箱设置,将圆周划分为和你输入风向间隔一致的扇区(比如设置n_dirs=18,对应每个扇区宽度20度),从根源上避免相邻风向被错误合并。 - 若需要径向轴匹配你自定义的归一化值,需要在绘图完成后手动调整径向轴的刻度映射,将原始绝对计数转换为你计算的相对占比,而非直接使用库默认的刻度展示。
内容的提问来源于stack exchange,提问作者user3704545
相关产品推荐
相关产品推荐

