如何用 Python 阅读风玫瑰图并绘制风玫瑰图
您见过风玫瑰图吗?风玫瑰图是一种可以一目了然地显示特定区域风向和风速的图表。它广泛应用于科学、环境研究、航空和海洋学等多个领域。

本文将详细介绍如何阅读风玫瑰图、 Python的逐步教程,教你如何绘制风铃图。这篇文章将让你更好地了解风铃,并让你有机会尝试制作风铃!
什么是风玫瑰?
风玫瑰图是 特定区域的风力数据图表,以方位和速度表示。.方位(风向)用方位角表示(0° 至 360°),风速用从图表中心向外的距离表示。 不同的风速用不同的颜色表示,以帮助您理解数据。
风玫瑰提供以下信息
- 盛行风向风向:您可以看到风从某个方向吹来的频率。
- 风速风力:确定风力是小还是大。
- 不同方向的风力分布风向:描述特定方向(如东北风、西南风)的风向。
用 Python 绘制风玫瑰图
下面是使用 Python 绘制风玫瑰图的代码,可根据风向和风速数据按方位直观显示风力分布。
import pandas as pd
import matplotlib.pyplot as plt
from matplotlib import font_manager, rc
from math import radians
import numpy as np
设置 # 韩文字体
rc('font', family='HCR Dotum')
创建 # 样本数据(可用真实数据替换)
方向 = np.array([0, 45, 90, 135, 180, 225, 270, 315])
速度 = np.array([2.5, 1.5, 1.0, 2.0, 3.0, 2.0, 1.0, 1.5])
创建 # 数据帧
df = pd.DataFrame({
方向":方向,# 风向数据
速度":速度,# 风速数据
})
def create_wind_rose(data):
创建 # 极坐标子图
fig = plt.figure(figsize=(8, 8))
sp = plt.subplot(projection="polar")
将 # 方向数据转换为弧度
direction_rad = np.radians(data['Direction'])
创建 # 散点图
scatter = sp.scatter(direction_rad, data['Speed']、
s=100,# 标记大小
c=data['Speed'], # 颜色随风速的变化
cmap='YlOrRd', # 彩色地图设置
alpha=0.6) # 透明度设置
# 图形默认设置
sp.set_theta_zero_location("N") # 将北纬设置为 0 度
sp.set_theta_direction(-1) # 顺时针增大角度
# 设置网格
sp.grid(True)
# 设置风速范围(0-3.5 米/秒)
sp.set_ylim(0, 3.5)
设置 # 方位角标签
angles = np.range(0, 360, 45)
labels = ['N'、'NE'、'E'、'SE'、'S'、'SW'、'W'、'NW']
sp.set_xticks(np.radians(angles))
sp.set_xticklabels(labels)
# 设置标题和标签
plt.title('Wind Rose Diagram', pad=20)
# 添加颜色条
cbar = plt.colorbar(scatter)
cbar.set_label('Wind Speed (m/s)')
返回
创建 # 风玫瑰图
fig = create_wind_rose(df)
保存并打印 # 图表
plt.savefig('wind_rose.jpg', dpi=300, bbox_inches='tight')
plt.show()
代码评注
- 加载程序库并生成数据
numpy和大熊猫生成风向(方位)和风速数据。
- 创建数据帧
方向(风向)和速度(风速)为一列。
- 创建极坐标图
plt.subplot(projection="polar")来设置风玫瑰图网格极坐标系。
- 转换定向数据
- 风数据存储在
弧度函数转换为弧度。
- 风数据存储在
- 创建散点图
散点将风向和风速数据可视化。- 使点的颜色随风速变化
cmap='YlOrRd'为
- 图表设置
- 设置相对于北方的方位角为 0° (
set_theta_zero_location("N")). - 将角度设置为顺时针增大 (
set_theta_direction(-1)).
- 设置相对于北方的方位角为 0° (
- 添加颜色条
- 添加一个颜色条来表示风速范围,这样您就可以看到颜色所代表的风力强度。
如何阅读风玫瑰图

- 阅读轴承
- 风是
N(北),NE(东北),E(东)它从八个主要方向吹来。 - 圆点所在的角度表示风的方向。
- 风是
- 读取风速
- 离中心越远,风力越强。
- 同心圆代表风速单位,最大值为 3.5 米/秒。
- 解读色彩
- 浅黄色表示风小,红色表示风大。
组织起来
在这篇文章中,我们介绍了如何读取风玫瑰图以及如何绘制风玫瑰图。我们还学习了如何使用 Python 将数据可视化以及如何解释结果。将风玫瑰图作为一种工具,可以更好地了解您所在地区的风力数据,并帮助您做出所需的决策!
顺便提一句,如果你有新风玫瑰,你可能就有新茎地块。 用 Python 可视化数值数据:如何使用干支图 查看文章回顾,了解图表可视化的新方法!
# 代码说明
import pandas as pd import matplotlib.pyplot as plt from matplotlib import font_manager, rc from math import radians import numpy as np
- 导入图书馆
大熊猫:用于创建数据帧和管理数据。matplotlib.pyplot:数据可视化库字体管理器和rc字体设置工具:用于设置韩文字体的工具。math.radians用于将角度转换为弧度值。numpy用于数组操作和数据生成。设置 # 韩文字体 rc('font', family='HCR Dotum')
- 韩文字体设置
- 设置字体,以便在图表中正确显示韩文字符。
HCR Dotum是一种受支持的韩文字体。- 您也可以使用系统中安装的其他韩文字体。
生成 # 样本数据(可用真实数据替换) 方向 = np.array([0, 45, 90, 135, 180, 225, 270, 315]) 速度 = np.array([2.5, 1.5, 1.0, 2.0, 3.0, 2.0, 1.0, 1.5])
- 生成数据
说明风向:将风向设置为八个方位角(0°、45°、...、315°)。速度表示各方向的风速(米/秒)。创建 # 数据帧 df = pd.DataFrame({ 方向":方向,# 风向数据 速度":速度,# 风速数据 })
- 创建数据帧
方向方位角:存储方位角数据。速度风速:存储每个方位角对应的风速数据。- 这些数据用于绘制风玫瑰图。
def create_wind_rose(data): 创建 # 极坐标子图 fig = plt.figure(figsize=(8, 8)) sp = plt.subplot(projection="polar")
- 定义函数并创建极坐标图
创建风玫瑰图(数据)获取输入数据帧并创建风铃。plt.figure(figsize=(8, 8))将画布尺寸设置为 8 英寸 × 8 英寸。plt.subplot(projection="polar")极坐标:生成极坐标图。该坐标系使用方位角和半径。将 # 方向数据转换为弧度 direction_rad = np.radians(data['Direction'])
- 将方向数据转换为弧度
np.radians将角度数据转换为弧度值。- 极坐标系将方位角视为弧度值,因此需要进行转换。
创建 # 散点图 scatter = sp.scatter(direction_rad, data['Speed']、 s=100, # 标记大小 c=data['Speed'], # 随风速改变颜色 cmap='YlOrRd', # 彩图设置 alpha=0.6) # 透明度设置
- 创建散点图
sp.scatter极坐标:在极坐标系统中以散点图形式显示每个数据点。
s=100:设置标记大小。c=data['Speed']根据风速值设置颜色。cmap='YlOrRd'颜色图:将颜色图设置为黄色-橙色-红色,以较深的颜色显示较强的风。阿尔法=0.6:设置标记的透明度。# 制图首选项 sp.set_theta_zero_location("N") # 将北纬设为 0 度 sp.set_theta_direction(-1) # 顺时针增大角度
- 设置极坐标
set_theta_zero_location("N"):将北(N)设定为 0°。set_theta_direction(-1)将方位角设置为顺时针增大。# 网格设置 sp.grid(True)
- 启用电网
- 启用基于方位角和半径的网格线,使数据更容易读取。
设置 # 的风速范围(0-3.5 米/秒) sp.set_ylim(0, 3.5)
- 设置风速范围
- 将半径范围限制为 0 至 3.5 米/秒。
- 显示该范围内各个方向的风速。
设置 # 方位角标签 angles = np.array(0, 360, 45) labels = [ 'N'、'NE'、'E'、'SE'、'S'、'SW'、'W'、'NW'] sp.set_xticks(np.radians(angles)) sp.set_xticklabels(labels)
- 设置方位角标签
角度方位角:设置方位角(0°、45°、...、315°)。标签方位: 为每个方位角设置相应的方位(N、NE、E 等)。set_xticks将方位角的位置设置为弧度值。set_xticklabels方位角:以标签形式显示每个方位角的名称。# 设置标题和标签 plt.title('Wind Rose Diagram', pad=20)
- 设置图表标题
plt.title将图表标题设置为 "风玫瑰图"。垫=20设置标题与图表之间的间距。添加 # 彩条 cbar = plt.colorbar(scatter) cbar.set_label('Wind Speed (m/s)')
- 添加颜色条
plt.colorbar(scatter)颜色:添加颜色条,显示风速带来的颜色变化。设置标签风速(米/秒): 将色标设置为 "风速(米/秒)"。回归
- 返回图形
- 完成的图形对象 (
杏)的新名称。创建 # 风玫瑰图 fig = create_wind_rose(df) 保存并打印 # 图表 plt.savefig('wind_rose.jpg', dpi=300, bbox_inches='tight') plt.show()
- 创建和保存图表
create_wind_rose(df)调用前面定义的函数创建风花。plt.savefig注意:将生成的图形保存为 "wind_rose.jpg "文件。plt.show在屏幕上显示图表。





