91超碰碰碰碰久久久久久综合_超碰av人澡人澡人澡人澡人掠_国产黄大片在线观看画质优化_txt小说免费全本

溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

如何利用Python matplotlib繪制風能玫瑰圖

發布時間:2021-03-26 10:55:05 來源:億速云 閱讀:1883 作者:小新 欄目:開發技術

這篇文章主要介紹如何利用Python matplotlib繪制風能玫瑰圖,文中介紹的非常詳細,具有一定的參考價值,感興趣的小伙伴們一定要看完!

概述

在之前的風資源分析文章中,有提到過用widrose包來進行玫瑰圖的繪制,目前的可視化繪圖包有很多,但是最基礎和底層的,本人認為還是matplotlib,有時候為了畫1-2個圖就去安裝一個包,好麻煩,我就是個安裝軟件的渣渣,所以,推己及人,我也研究了一下,matplotlib畫玫瑰圖的方法,廢話不多說,開始咯~~~

風能玫瑰圖

玫瑰圖是氣象科學專業統計圖表,用來統計某個地區一段時期內風向、風速發生頻率,又分為“風向玫瑰圖”和“風速玫瑰圖”。本文中的玫瑰圖是將風速和風向結合在一起,畫出的風能玫瑰圖。

讀取數據

讀取對應的測風數據,并進行數據的基本計算,在matplotlib中畫圖中沒有集成的計算包,所以一定要充分了解繪制玫瑰圖的原理,將數據通過計算來處理成繪圖需要的形式,再進行調用繪圖。

**1、讀取數據,**并提取出繪圖的風速風向數據,此時的數據是原始風速風向數據。

import pandas as pd
import matplotlib.pyplot as plt
import numpy as np
import matplotlib as mpl

plt.rcParams['font.sans-serif']=['SimHei'] #顯示中文
plt.rcParams['axes.unicode_minus']=False #顯示負號

filename=r'E:\python總結\實例數據\matplotlib畫玫瑰圖\Sta_WLS7-4880-0420-0728.xlsx'
datat=pd.read_excel(filename,sheet_name='原始數據')
datat.columns

# 提取繪圖的風速風向數據,并進行簡單的刪除空值處理
dt=datat.loc[:,('90m Wind Speed (m/s)','90m Wind Direction (?)')] #提取90m高度的風速和風向
dt=dt.dropna() #刪除空值

如何利用Python matplotlib繪制風能玫瑰圖

2、進行繪圖前的數據計算。

mx=np.ceil(max(dt['90m Wind Speed (m/s)'])) #風速最大值向上取整

ct0=np.array(np.arange(0,361,22.5)) #劃分風向的區間,22.5度一個區間
ct1=np.array(np.arange(0,mx+2,2)) #劃分風速的區間,2米一個區間

#將風速和風向進行區間劃分
dt['wd']=pd.cut(dt['90m Wind Direction (?)'],ct0) 
dt['ws']=pd.cut(dt['90m Wind Speed (m/s)'],ct1) 

#計算各區間段數據量,輸出結果為層次化索引序列
count=dt['90m Wind Speed (m/s)'].groupby([dt['ws'],dt['wd']]).count() 
data=count.unstack() #將層次化索引轉化為表格

如何利用Python matplotlib繪制風能玫瑰圖

如何利用Python matplotlib繪制風能玫瑰圖

3、繪制玫瑰圖與顏色條。

根據上面計算的數據data來進行繪圖。

n=16 #繪制的扇區的個數,與上面角度的區間劃分一致的
theta=np.linspace(0,2*np.pi,n,endpoint=False) #獲取16個方向的角度值
width=np.pi*1.5/n #設置扇形的寬度
#設置角度對應的標簽
labels=list(['N','','45','','E','','135','','S','','225','','W','','315',''])

fig=plt.figure() #新建畫布
ax=fig.add_axes([0.1,0.1,0.7,0.7],projection='polar') #在畫布添加一個極坐標圖,即玫瑰圖
ax1=fig.add_axes([0.8,0.1,0.03,0.7]) #在畫布里面添加顏色條,分別對應左,下,寬,高

#根據劃分的風速段個數來進行顏色配置
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]
 #畫玫瑰柱狀圖,由此類推,可以畫雷達圖,氣泡圖等等,只要將bar改成對應的圖就可以
 ax.bar(theta,rad,width=width,bottom=100,label=idx,tick_label=labels,color=colors[i]) 
 
ax.set_theta_zero_location('N') #設置0度正北方向
ax.set_theta_direction(-1) #設置順時針方向繪圖
ax.set_title('風玫瑰圖',fontsize=16)
ax.tick_params(labelsize=15) 
ax.set_yticks([200,500,1000,1500]) #默認的y軸出現的頻數,也可設置為空
cb=mpl.colorbar.ColorbarBase(ax1,cmap=cmap,norm=norm) #設置顏色條
cb.ax.tick_params(labelsize=14) #設置顏色條字體和大小

得到風玫瑰柱狀圖如下:

如何利用Python matplotlib繪制風能玫瑰圖

將里面:

ax.bar(theta,rad,width=width,bottom=100,label=idx,tick_label=labels,color=colors[i])

替換成:

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

得到風能面積圖,不過由于本次數據覆蓋嚴重,比較丑:

如何利用Python matplotlib繪制風能玫瑰圖

簡單的風向玫瑰圖

在實際運用中,有時候并不需要很復雜的玫瑰圖,簡單的表示各風向上的風速出現頻次就可以了,因此,可以畫簡單的風向玫瑰圖。

data_0=dt['90m Wind Speed (m/s)'].groupby(dt['wd']).count() #計算每一個風向段的風速頻次

ax=plt.subplot(111,projection='polar') #建立極坐標系
bars=ax.bar(theta,data_0,width=width,bottom=0.0)

#為每個柱子配顏色,有兩種方法,一種是一個柱子設置一個顏色,根據柱子的個數設置顏色的個數
#另一種是用連續色彩的映射,第二種方法需要將畫圖數據歸一化到0-1之間
mm=max(data_0)
for r,bar in zip(data_0,bars):
 bar.set_facecolor(plt.cm.viridis(r/mm)) #設置數值映射的顏色
 bar.set_alpha(0.8) #設置顏色透明度
 
ax.set_theta_zero_location('N') #設置0度正北方向
ax.set_theta_direction(-1) #設置順時針方向繪圖
ax.set_title('風向玫瑰圖',fontsize=16)
ax.tick_params(labelsize=13) 
ax.set_yticks([500,1000,2000,4000]) #默認的y軸出現的頻數,也可設置為空

得到如下圖:

如何利用Python matplotlib繪制風能玫瑰圖

由于風向數據的特征很明顯,即主要風向明確,所以圖畫出來不太好看。

以上是“如何利用Python matplotlib繪制風能玫瑰圖”這篇文章的所有內容,感謝各位的閱讀!希望分享的內容對大家有幫助,更多相關知識,歡迎關注億速云行業資訊頻道!

向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI

克什克腾旗| 武平县| 安义县| 大关县| 巨鹿县| 德格县| 雷山县| 瑞金市| 迁西县| 兴安县| 临桂县| 霍林郭勒市| 城市| 英吉沙县| 延长县| 临泉县| 花莲市| 齐河县| 灵山县| 西盟| 峡江县| 新巴尔虎左旗| 金塔县| 富裕县| 鄂尔多斯市| 上思县| 比如县| 巴青县| 弥渡县| 亚东县| SHOW| 册亨县| 阿克陶县| 平凉市| 雷波县| 石棉县| 洪湖市| 长垣县| 石楼县| 吴川市| 望奎县|