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

使用WINDROSE库绘制固定坐标风玫瑰图时遇ValueError错误

解决风玫瑰图绘制错误及空白图问题

错误原因分析

ValueError: 'Fire' is not a valid value for name 是因为你使用的Fire配色方案不在windrose支持的colormap列表中。windrose依赖matplotlib的标准配色,'Fire'可能是matplotlib新版本或第三方扩展新增的,未被windrose兼容,换成官方支持的配色(如viridis、plasma、accent等)即可解决。

空白图排查与解决

空白图通常和数据有效性、绘图参数设置有关,按以下步骤处理:

1. 清理验证数据

确保你的DataFrame中:

  • direction列值在0-360度范围内,无NaN或异常值
  • speed列值为非负数,无NaN或异常值

代码示例:

# 清理缺失值和异常数据
wind_df = wind_df.dropna(subset=['direction', 'speed'])
wind_df = wind_df[(wind_df['direction'].between(0, 360)) & (wind_df['speed'] >= 0)]

2. 正确绘图代码

使用标准流程创建windrose坐标轴,并指定兼容的colormap,同时建议手动设置风速区间(bins参数),避免自动分组不合理导致的空白:

import pandas as pd
from windrose import WindroseAxes
import matplotlib.pyplot as plt

# 创建风玫瑰图专用坐标轴
fig, ax = plt.subplots(subplot_kw={'projection': 'windrose'})

# 绘制风玫瑰图,指定兼容的colormap和风速区间
ax.bar(
    wind_df['direction'], 
    wind_df['speed'], 
    opening=0.8, 
    cmap='viridis',  # 换成windrose支持的配色
    bins=[0, 2, 4, 6, 8, 10]  # 根据你的数据调整风速区间
)

# 添加图例
ax.set_legend(title='Wind Speed (m/s)')

# 显示图形
plt.show()

3. 额外注意事项

  • ERA5的风向是气象风向(风的来向),windrose默认采用此规则,无需转换;如果是海洋学风向(去向),需将方向转换为360 - direction
  • 若仍有空白,可检查数据量是否过少,或调整bins区间匹配你的风速分布

内容的提问来源于stack exchange,提问作者António Manuel Lameira Gaspar

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.28 05:52:57