利用Python进行风玫瑰图绘制的方法
2021-12-24李小滨
摘要: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—),男,汉族,河北沧州人,工程师,在新疆和静县巴音布鲁克气象站从事测报、装备保障等工作。