利用Python进行风玫瑰图绘制的方法

2021-12-24 12:14李小滨
科技信息·学术版 2021年3期

摘要:python作为一种计算机编程语言,有强大的科学计算库。随着气象工作数据处理需求愈加强烈,python因其强大的数据处理能力而至关重要。

关键词:python;风玫瑰图;科学计算

1.引言:

随着NumPy和Matplotlib 等众多程序库的开发, Python 越来越适合于做科学计算、绘制高质量图像。Python是一门通用的程序设计语言,更接近人的自然语言,易学,适合非计算机专业科研人员。Python已成为众多领城的科学计算工具。

2.Python简介:

Rossum1989年发明,是一种面向对象的动态的解释型程序设计语言。

3.常用科学计算库

3.1NumPy

用pythoy实现的开源的数值计算扩展,提供了许多高级的数值编程功能。

3.2Matplotlib

Matplotlib是python最著名的面向对象绘图库,适合编写短小脚本程序,进行快速的交互式绘图。

4.使用python进行风玫瑰图绘制的方法

提取台站某年风数据,利用Matplolib进行风玫瑰图绘制。

4.1.Matplotlib

4.1.1代码

import pandas as pd

import matplotlib.pyplot as plt

import numpy as np

import matplotlib as mpl

import xlrd

plt.rcParams['font.sans-serif'] = ['SimHei']

plt.rcParams['axes.unicode_minus'] = False

Feng2018 = xlrd.open_workbook(r'E:\2018Feng.xlsx')

datat = pd.read_excel(Feng2018, sheet_name='sheet2018')

dt = datat.loc[:, ('WIN_D_Avg_2mi', 'WIN_S_Avg_2mi')]

dt = dt.dropna()

mx = np.ceil(max(dt['WIN_S_Avg_2mi']))

ct0 = np.array(np.arange(0, 361, 22.5))

ct1 = np.array(np.arange(0, mx + 2, 2))

dt['wd'] = pd.cut(dt['WIN_D_Avg_2mi'], ct0)

dt['ws'] = pd.cut(dt['WIN_S_Avg_2mi'], ct1)

count = dt['WIN_S_Avg_2mi'].groupby([dt['ws'], dt['wd']]).count()

data = count.unstack()

n = 16

theta = np.linspace(0, 2 * np.pi, n, endpoint=False)

width = np.pi * 2 / n

labels = list(['N', 'NNE', 'NE', 'ENE', 'E', 'ESE', 'SE', 'SSE', 'S', 'SSW', 'SW', 'WWS', 'W', 'WWN', 'NW', 'NNW'])

fig = plt.figure()

ax = fig.add_axes([0.1, 0.1, 0.7, 0.7], projection='polar')

ax1 = fig.add_axes([0.8, 0.2, 0.01, 0.6])

colors = ['blue', 'orange', 'forestgreen', 'tomato', 'violet', 'red', 'm','yellow', 'gray']

cmap = mpl.colors.ListedColormap(colors)

norm = mpl.colors.BoundaryNorm(ct1, cmap.N)

for i in range(0, len(data.index)):

idx = data.index[i]

rad = data.loc[idx]

ax.fill(theta,rad,alpha=0.5,color=colors[i])

ax.set_theta_zero_location('N')

ax.set_theta_direction(-1)

ax.set_title('讀取Excel作风玫瑰图(制作:李小滨)', fontsize=12)

ax.tick_params(labelsize=15)

ax.set_yticks([100,200,300,400,500])

cb = mpl.colorbar.ColorbarBase(ax1, cmap=cmap, norm=norm)

cb.set_label("个数统计标识色",size=12)

cb.ax.tick_params(labelsize=14)

plt.show()

4.1.2运行结果如下图:

5.结语:

Pytnon作为一门通用语言,简洁效率、易于维护,拥有强大的科学计算库。因此Python非常适合进行各类气象数据、气象报表的处理,使数据可视化、具象化。

参考文献:

[1]张若愚.Python科学计算[M].清华大学出版社

[2]Wes McKinney.利用Python进行数据分析.Jupyter

作者简介:李小滨(1984—),男,汉族,河北沧州人,工程师,在新疆和静县巴音布鲁克气象站从事测报、装备保障等工作。