摘要:python作為一種計(jì)算機(jī)編程語言,有強(qiáng)大的科學(xué)計(jì)算庫。隨著氣象工作數(shù)據(jù)處理需求愈加強(qiáng)烈,python因其強(qiáng)大的數(shù)據(jù)處理能力而至關(guān)重要。
關(guān)鍵詞:python;風(fēng)玫瑰圖;科學(xué)計(jì)算
1.引言:
隨著NumPy和Matplotlib 等眾多程序庫的開發(fā), Python 越來越適合于做科學(xué)計(jì)算、繪制高質(zhì)量圖像。Python是一門通用的程序設(shè)計(jì)語言,更接近人的自然語言,易學(xué),適合非計(jì)算機(jī)專業(yè)科研人員。Python已成為眾多領(lǐng)城的科學(xué)計(jì)算工具。
2.Python簡介:
Rossum1989年發(fā)明,是一種面向?qū)ο蟮膭?dòng)態(tài)的解釋型程序設(shè)計(jì)語言。
3.常用科學(xué)計(jì)算庫
3.1NumPy
用pythoy實(shí)現(xiàn)的開源的數(shù)值計(jì)算擴(kuò)展,提供了許多高級(jí)的數(shù)值編程功能。
3.2Matplotlib
Matplotlib是python最著名的面向?qū)ο罄L圖庫,適合編寫短小腳本程序,進(jìn)行快速的交互式繪圖。
4.使用python進(jìn)行風(fēng)玫瑰圖繪制的方法
提取臺(tái)站某年風(fēng)數(shù)據(jù),利用Matplolib進(jìn)行風(fēng)玫瑰圖繪制。
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作風(fēng)玫瑰圖(制作:李小濱)', 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("個(gè)數(shù)統(tǒng)計(jì)標(biāo)識(shí)色",size=12)
cb.ax.tick_params(labelsize=14)
plt.show()
4.1.2運(yùn)行結(jié)果如下圖:
5.結(jié)語:
Pytnon作為一門通用語言,簡潔效率、易于維護(hù),擁有強(qiáng)大的科學(xué)計(jì)算庫。因此Python非常適合進(jìn)行各類氣象數(shù)據(jù)、氣象報(bào)表的處理,使數(shù)據(jù)可視化、具象化。
參考文獻(xiàn):
[1]張若愚.Python科學(xué)計(jì)算[M].清華大學(xué)出版社
[2]Wes McKinney.利用Python進(jìn)行數(shù)據(jù)分析.Jupyter
作者簡介:李小濱(1984—),男,漢族,河北滄州人,工程師,在新疆和靜縣巴音布魯克氣象站從事測報(bào)、裝備保障等工作。