如何用 Python 阅读风玫瑰图并绘制风玫瑰图

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

 바람장미 읽는 법 예시 그림
(如何阅读风玫瑰图的插图--Python 可视化 )

本文将详细介绍如何阅读风玫瑰图、 Python的逐步教程,教你如何绘制风铃图。这篇文章将让你更好地了解风铃,并让你有机会尝试制作风铃!

什么是风玫瑰?

风玫瑰图是 特定区域的风力数据图表,以方位和速度表示。.方位(风向)用方位角表示(0° 至 360°),风速用从图表中心向外的距离表示。 不同的风速用不同的颜色表示,以帮助您理解数据。

风玫瑰提供以下信息

  1. 盛行风向风向:您可以看到风从某个方向吹来的频率。
  2. 风速风力:确定风力是小还是大。
  3. 不同方向的风力分布风向:描述特定方向(如东北风、西南风)的风向。

用 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()

代码评注

  1. 加载程序库并生成数据
    • numpy大熊猫生成风向(方位)和风速数据。
  2. 创建数据帧
    • 方向(风向)和 速度(风速)为一列。
  3. 创建极坐标图
    • plt.subplot(projection="polar")来设置风玫瑰图网格极坐标系。
  4. 转换定向数据
    • 风数据存储在 弧度 函数转换为弧度。
  5. 创建散点图
    • 散点将风向和风速数据可视化。
    • 使点的颜色随风速变化 cmap='YlOrRd'
  6. 图表设置
    • 设置相对于北方的方位角为 0° (set_theta_zero_location("N")).
    • 将角度设置为顺时针增大 (set_theta_direction(-1)).
  7. 添加颜色条
    • 添加一个颜色条来表示风速范围,这样您就可以看到颜色所代表的风力强度。

如何阅读风玫瑰图

바람장미 읽는 법 요약 이미지
(如何阅读风铃的概要)
  1. 阅读轴承
    • 风是 N(北), NE(东北), E(东) 它从八个主要方向吹来。
    • 圆点所在的角度表示风的方向。
  2. 读取风速
    • 离中心越远,风力越强。
    • 同心圆代表风速单位,最大值为 3.5 米/秒。
  3. 解读色彩
    • 浅黄色表示风小,红色表示风大。

组织起来

在这篇文章中,我们介绍了如何读取风玫瑰图以及如何绘制风玫瑰图。我们还学习了如何使用 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
  1. 导入图书馆
    • 大熊猫:用于创建数据帧和管理数据。
    • matplotlib.pyplot:数据可视化库
    • 字体管理器rc字体设置工具:用于设置韩文字体的工具。
    • math.radians用于将角度转换为弧度值。
    • numpy用于数组操作和数据生成。
设置 # 韩文字体
rc('font', family='HCR Dotum')
  1. 韩文字体设置
    • 设置字体,以便在图表中正确显示韩文字符。 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])
  1. 生成数据
    • 说明风向:将风向设置为八个方位角(0°、45°、...、315°)。
    • 速度表示各方向的风速(米/秒)。
创建 # 数据帧
df = pd.DataFrame({
    方向":方向,# 风向数据
    速度":速度,# 风速数据
})
  1. 创建数据帧
    • 方向方位角:存储方位角数据。
    • 速度风速:存储每个方位角对应的风速数据。
    • 这些数据用于绘制风玫瑰图。
def create_wind_rose(data):
    创建 # 极坐标子图
    fig = plt.figure(figsize=(8, 8))
    sp = plt.subplot(projection="polar")
  1. 定义函数并创建极坐标图
    • 创建风玫瑰图(数据)获取输入数据帧并创建风铃。
    • plt.figure(figsize=(8, 8))将画布尺寸设置为 8 英寸 × 8 英寸。
    • plt.subplot(projection="polar")极坐标:生成极坐标图。该坐标系使用方位角和半径。
    将 # 方向数据转换为弧度
    direction_rad = np.radians(data['Direction'])
  1. 将方向数据转换为弧度
    • np.radians将角度数据转换为弧度值。
    • 极坐标系将方位角视为弧度值,因此需要进行转换。
    创建 # 散点图
    scatter = sp.scatter(direction_rad, data['Speed']、
                        s=100, # 标记大小
                        c=data['Speed'], # 随风速改变颜色
                        cmap='YlOrRd', # 彩图设置
                        alpha=0.6) # 透明度设置
  1. 创建散点图
    • sp.scatter极坐标:在极坐标系统中以散点图形式显示每个数据点。
      • s=100:设置标记大小。
      • c=data['Speed']根据风速值设置颜色。
      • cmap='YlOrRd'颜色图:将颜色图设置为黄色-橙色-红色,以较深的颜色显示较强的风。
      • 阿尔法=0.6:设置标记的透明度。
    # 制图首选项
    sp.set_theta_zero_location("N") # 将北纬设为 0 度
    sp.set_theta_direction(-1) # 顺时针增大角度
  1. 设置极坐标
    • set_theta_zero_location("N"):将北(N)设定为 0°。
    • set_theta_direction(-1)将方位角设置为顺时针增大。
    # 网格设置
    sp.grid(True)
  1. 启用电网
    • 启用基于方位角和半径的网格线,使数据更容易读取。
    设置 # 的风速范围(0-3.5 米/秒)
    sp.set_ylim(0, 3.5)
  1. 设置风速范围
    • 将半径范围限制为 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)
  1. 设置方位角标签
    • 角度方位角:设置方位角(0°、45°、...、315°)。
    • 标签方位: 为每个方位角设置相应的方位(N、NE、E 等)。
    • set_xticks将方位角的位置设置为弧度值。
    • set_xticklabels方位角:以标签形式显示每个方位角的名称。
    # 设置标题和标签
    plt.title('Wind Rose Diagram', pad=20)
  1. 设置图表标题
    • plt.title将图表标题设置为 "风玫瑰图"。
    • 垫=20设置标题与图表之间的间距。
    添加 # 彩条
    cbar = plt.colorbar(scatter)
    cbar.set_label('Wind Speed (m/s)')
  1. 添加颜色条
    • plt.colorbar(scatter)颜色:添加颜色条,显示风速带来的颜色变化。
    • 设置标签风速(米/秒): 将色标设置为 "风速(米/秒)"。
    回归
  1. 返回图形
    • 完成的图形对象 ()的新名称。
创建 # 风玫瑰图
fig = create_wind_rose(df)

保存并打印 # 图表
plt.savefig('wind_rose.jpg', dpi=300, bbox_inches='tight')
plt.show()
  1. 创建和保存图表
    • create_wind_rose(df)调用前面定义的函数创建风花。
    • plt.savefig注意:将生成的图形保存为 "wind_rose.jpg "文件。
    • plt.show在屏幕上显示图表。

类似文章