最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

利用Python matplotlib繪制風(fēng)能玫瑰圖

 更新時(shí)間:2021年03月26日 09:23:37   作者:加油學(xué)習(xí)和努力賺錢(qián)的豬媽咪  
這篇文章主要給大家介紹了關(guān)于如何利用Python matplotlib繪制風(fēng)能玫瑰圖的相關(guān)資料,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧

概述

在之前的風(fēng)資源分析文章中,有提到過(guò)用widrose包來(lái)進(jìn)行玫瑰圖的繪制,目前的可視化繪圖包有很多,但是最基礎(chǔ)和底層的,本人認(rèn)為還是matplotlib,有時(shí)候?yàn)榱水?huà)1-2個(gè)圖就去安裝一個(gè)包,好麻煩,我就是個(gè)安裝軟件的渣渣,所以,推己及人,我也研究了一下,matplotlib畫(huà)玫瑰圖的方法,廢話(huà)不多說(shuō),開(kāi)始咯~~~

風(fēng)能玫瑰圖

玫瑰圖是氣象科學(xué)專(zhuān)業(yè)統(tǒng)計(jì)圖表,用來(lái)統(tǒng)計(jì)某個(gè)地區(qū)一段時(shí)期內(nèi)風(fēng)向、風(fēng)速發(fā)生頻率,又分為“風(fēng)向玫瑰圖”和“風(fēng)速玫瑰圖”。本文中的玫瑰圖是將風(fēng)速和風(fēng)向結(jié)合在一起,畫(huà)出的風(fēng)能玫瑰圖。

讀取數(shù)據(jù)

讀取對(duì)應(yīng)的測(cè)風(fēng)數(shù)據(jù),并進(jìn)行數(shù)據(jù)的基本計(jì)算,在matplotlib中畫(huà)圖中沒(méi)有集成的計(jì)算包,所以一定要充分了解繪制玫瑰圖的原理,將數(shù)據(jù)通過(guò)計(jì)算來(lái)處理成繪圖需要的形式,再進(jìn)行調(diào)用繪圖。

**1、讀取數(shù)據(jù),**并提取出繪圖的風(fēng)速風(fēng)向數(shù)據(jù),此時(shí)的數(shù)據(jù)是原始風(fēng)速風(fēng)向數(shù)據(jù)。

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 #顯示負(fù)號(hào)

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

# 提取繪圖的風(fēng)速風(fēng)向數(shù)據(jù),并進(jìn)行簡(jiǎn)單的刪除空值處理
dt=datat.loc[:,('90m Wind Speed (m/s)','90m Wind Direction (�)')] #提取90m高度的風(fēng)速和風(fēng)向
dt=dt.dropna() #刪除空值

2、進(jìn)行繪圖前的數(shù)據(jù)計(jì)算。

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

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

#將風(fēng)速和風(fēng)向進(jìn)行區(qū)間劃分
dt['wd']=pd.cut(dt['90m Wind Direction (�)'],ct0) 
dt['ws']=pd.cut(dt['90m Wind Speed (m/s)'],ct1) 

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

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

根據(jù)上面計(jì)算的數(shù)據(jù)data來(lái)進(jìn)行繪圖。

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

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

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

得到風(fēng)玫瑰柱狀圖如下:

將里面:

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])

得到風(fēng)能面積圖,不過(guò)由于本次數(shù)據(jù)覆蓋嚴(yán)重,比較丑:

簡(jiǎn)單的風(fēng)向玫瑰圖

在實(shí)際運(yùn)用中,有時(shí)候并不需要很復(fù)雜的玫瑰圖,簡(jiǎn)單的表示各風(fēng)向上的風(fēng)速出現(xiàn)頻次就可以了,因此,可以畫(huà)簡(jiǎn)單的風(fēng)向玫瑰圖。

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

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

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

得到如下圖:

由于風(fēng)向數(shù)據(jù)的特征很明顯,即主要風(fēng)向明確,所以圖畫(huà)出來(lái)不太好看。

以上為matplotlib畫(huà)玫瑰圖的用法,另外還有一些衍生的玫瑰圖,大家可以據(jù)此摸索一下。

總結(jié)

到此這篇關(guān)于利用Python matplotlib繪制風(fēng)能玫瑰圖的文章就介紹到這了,更多相關(guān)matplotlib繪制風(fēng)能玫瑰圖內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

  • Python標(biāo)準(zhǔn)庫(kù)urllib2的一些使用細(xì)節(jié)總結(jié)

    Python標(biāo)準(zhǔn)庫(kù)urllib2的一些使用細(xì)節(jié)總結(jié)

    這篇文章主要介紹了Python標(biāo)準(zhǔn)庫(kù)urllib2的一些使用細(xì)節(jié)總結(jié),本文總結(jié)了Proxy 的設(shè)置、Timeout 設(shè)置、Redirect、Cookie等細(xì)節(jié)的使用,需要的朋友可以參考下
    2015-03-03
  • YOLOv5改進(jìn)教程之添加注意力機(jī)制

    YOLOv5改進(jìn)教程之添加注意力機(jī)制

    注意力機(jī)制最先被用在NLP領(lǐng)域,Attention就是為了讓模型認(rèn)識(shí)到數(shù)據(jù)中哪一部分是最重要的,為它分配更大的權(quán)重,獲得更多的注意力在一些特征上,讓模型表現(xiàn)更好,這篇文章主要給大家介紹了關(guān)于YOLOv5改進(jìn)教程之添加注意力機(jī)制的相關(guān)資料,需要的朋友可以參考下
    2022-06-06
  • Python Multiprocessing多進(jìn)程 使用tqdm顯示進(jìn)度條的實(shí)現(xiàn)

    Python Multiprocessing多進(jìn)程 使用tqdm顯示進(jìn)度條的實(shí)現(xiàn)

    這篇文章主要介紹了Python Multiprocessing多進(jìn)程 使用tqdm顯示進(jìn)度條的實(shí)現(xiàn),文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下
    2019-08-08
  • python中的反斜杠問(wèn)題深入講解

    python中的反斜杠問(wèn)題深入講解

    這篇文章主要給大家介紹了關(guān)于python中反斜杠問(wèn)題的相關(guān)資料,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家學(xué)習(xí)或者使用python具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面來(lái)一起學(xué)習(xí)學(xué)習(xí)吧
    2019-08-08
  • 設(shè)置jupyter中DataFrame的顯示限制方式

    設(shè)置jupyter中DataFrame的顯示限制方式

    這篇文章主要介紹了設(shè)置jupyter中DataFrame的顯示限制方式,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過(guò)來(lái)
    2020-04-04
  • pymysql實(shí)現(xiàn)增刪改查的操作指南(python)

    pymysql實(shí)現(xiàn)增刪改查的操作指南(python)

    python中可以使用pymysql來(lái)MySQL數(shù)據(jù)庫(kù)的連接,并實(shí)現(xiàn)數(shù)據(jù)庫(kù)的各種操作,這篇文章主要給大家介紹了關(guān)于pymsql實(shí)現(xiàn)增刪改查的相關(guān)資料,需要的朋友可以參考下
    2021-05-05
  • 在Django中預(yù)防CSRF攻擊的操作

    在Django中預(yù)防CSRF攻擊的操作

    這篇文章主要介紹了在Django中預(yù)防CSRF攻擊的操作,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過(guò)來(lái)看看吧
    2020-03-03
  • Python list和str互轉(zhuǎn)的實(shí)現(xiàn)示例

    Python list和str互轉(zhuǎn)的實(shí)現(xiàn)示例

    這篇文章主要介紹了Python list和str互轉(zhuǎn)的實(shí)現(xiàn)示例,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧
    2020-11-11
  • Python cookbook(數(shù)據(jù)結(jié)構(gòu)與算法)找出序列中出現(xiàn)次數(shù)最多的元素算法示例

    Python cookbook(數(shù)據(jù)結(jié)構(gòu)與算法)找出序列中出現(xiàn)次數(shù)最多的元素算法示例

    這篇文章主要介紹了Python cookbook(數(shù)據(jù)結(jié)構(gòu)與算法)找出序列中出現(xiàn)次數(shù)最多的元素算法,涉及Python collections模塊中的Counter類(lèi)相關(guān)使用技巧與操作注意事項(xiàng),需要的朋友可以參考下
    2018-03-03
  • Django學(xué)習(xí)之文件上傳與下載

    Django學(xué)習(xí)之文件上傳與下載

    這篇文章主要為大家詳細(xì)介紹了Django學(xué)習(xí)之文件上傳與下載,文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2019-10-10

最新評(píng)論

遵义市| 常山县| 霸州市| 株洲县| 安西县| 客服| 龙江县| 丰县| 藁城市| 伊宁市| 左云县| 襄汾县| 措美县| 普格县| 南京市| 广平县| 金阳县| 海伦市| 韩城市| 三台县| 宁城县| 永昌县| 富民县| 蕉岭县| 涞源县| 洛阳市| 永年县| 远安县| 元氏县| 漳浦县| 博湖县| 江山市| 浪卡子县| 溆浦县| 遵化市| 青岛市| 河间市| 清丰县| 什邡市| 沙湾县| 南开区|