超干货 | 泰勒图(Taylor diagram)绘制方法大汇总
近日,有小伙伴私信小編關于泰勒圖(Taylor diagram) 的繪制方法,小編也進行了相關資料查詢,那么,今天這篇推文借給大家介紹一下如何繪制泰勒圖(Taylor diagram),具體內容如下:
泰勒圖(Taylor diagram)的基本介紹
R 繪制泰勒圖(Taylor diagram)
Python 繪制泰勒圖(Taylor diagram)
泰勒圖(Taylor diagram)的基本介紹
泰勒圖(Taylor diagram) 可以簡單的理解為一種的可同時表示標準差、均方根誤差和相關系數三個指標的可視化圖表。樣例圖如下(來源于網絡):
泰勒圖(Taylor diagram)樣例通常,泰勒圖中的散點代表不同模型,橫縱軸代表標準差,輻射線代表相關系數,虛線代表均方根誤差,可以多角度多維度的比較各模型指標之間的關系。更多關于泰勒圖(Taylor diagram)的介紹,小伙伴們可自行搜索哈~下面,小編詳細介紹如何使用R和Python繪制泰勒圖(Taylor diagram)。
R 繪制泰勒圖(Taylor diagram)
小編在查找資料時,發現目前繪制泰勒圖較為方便的包有R-plotrix包和R-openair包,接下來,就單獨進行介紹:
R-plotrix包繪制
由于R-plotrix包繪制泰勒圖結果可能美觀欠缺,這里小編直接給出樣例供大家參考,如下:
「樣例」:
library(plotrix) ref<-rnorm(30,sd=2) model1<-ref+rnorm(30)/2 taylor.diagram(ref,model1)Taylor diagram01 of plotrix當然,你還可以通過設置pos.cor=FALSE 來獲取全部值的相關系數,如下:
taylor.diagram(ref,model1,pos.cor=FALSE)Taylor diagram02 of plotrix更多詳細參數信息,感興趣的同學可參考R-openair包[1]
R-openair包繪制
R-openair包是一個提供空氣質量數據(air quality data)的第三方包,其提供的TaylorDiagram() 繪圖函數就可以很好的繪制泰勒圖。樣例如下:
首先進行數據構造(由于所需數據的特殊性,這里直接使用其提供好的數據):
library(openair) library(tidyverse) dat?<-?selectByDate(mydata,?year?=?2003) dat?<-?data.frame(date?=?mydata$date,?obs?=?mydata$nox,?mod?=?mydata$nox)dat?<-?transform(dat,?month?=?as.numeric(format(date,?"%m"))) mod1?<-?transform(dat,?mod?=?mod?+?10?*?month?+?10?*?month?*?rnorm(nrow(dat)),model?=?"model?1") #?model?1 mod1?<-?transform(mod1,?mod?=?c(mod[5:length(mod)],?mod[(length(mod)?-?3)?:length(mod)]))#?model?2 mod2?<-?transform(dat,?mod?=?mod?+?7?*?month?+?7?*?month?*?rnorm(nrow(dat)),model?=?"model?2") #?model?3 mod3?<-?transform(dat,?mod?=?mod?+?3?*?month?+?3?*?month?*?rnorm(nrow(dat)),model?=?"model?3")mod.dat?<-?rbind(mod1,?mod2,?mod3)可視化繪制:
TaylorDiagram(mod.dat,?obs?=?"obs",?mod?=?"mod",?group?=?"model")Example01 Of Taylor diagram in openair::TaylorDiagram()由于TaylorDiagram()繪圖函數提供的圖形設置參數較為豐富,我們還可以對其設置如下:
TaylorDiagram(mod.dat,?obs?=?"obs",?mod?=?"mod",?group?=?"model",type?=?"season",cols=c("#0073C2","#EFC000","#868686"),rms.col="red",cor.col="#3B3B3B",arrow.lwd=1.5)Example02 Of Taylor diagram in openair::TaylorDiagram()以上就是對openair::TaylorDiagram() 繪制泰勒圖(Taylor diagram)的簡單介紹,更多詳細參數信息參考R-openair::TaylorDiagram()[2]
Python 繪制泰勒圖(Taylor diagram)
小編在查詢資料時,發現Python繪制泰勒圖大多都是基于Matplotlib自行定義繪制。這里小編發現了一個繪制泰勒圖的寶藏可視化庫-「SkillMetrics」,其提供多種泰勒圖的繪制函數,接下來小編就選擇幾種泰勒圖的樣式例子進行展示(數據使用虛構的數據集),如下:
「樣例一:」 基礎泰勒圖
import?matplotlib.pyplot?as?plt from?matplotlib?import?rcParams import?numpy?as?np import?pandas??as?pd import?skill_metrics?as?smdata?=?pd.read_excel(r"test_data.xlsx") #?以下操作可以當作固定步驟 taylor_stats1?=?sm.taylor_statistics(data.pred1,data.ref,'data') taylor_stats2?=?sm.taylor_statistics(data.pred2,data.ref,'data') taylor_stats3?=?sm.taylor_statistics(data.pred3,data.ref,'data') sdev?=?np.array([taylor_stats1['sdev'][0],?taylor_stats1['sdev'][1],?taylor_stats2['sdev'][1],?taylor_stats3['sdev'][1]]) crmsd?=?np.array([taylor_stats1['crmsd'][0],?taylor_stats1['crmsd'][1],?taylor_stats2['crmsd'][1],?taylor_stats3['crmsd'][1]]) ccoef?=?np.array([taylor_stats1['ccoef'][0],?taylor_stats1['ccoef'][1],?taylor_stats2['ccoef'][1],?taylor_stats3['ccoef'][1]])#?設置matplotlib?基本配置 rcParams["figure.figsize"]?=?[6,?6] rcParams["figure.facecolor"]?=?"white" rcParams["figure.edgecolor"]?=?"white" rcParams["figure.dpi"]?=?80 rcParams['lines.linewidth']?=?1?#? rcParams["font.family"]?=?"Times?New?Roman" rcParams.update({'font.size':?12})?#? plt.close('all') #?開始繪圖 text_font?=?{'size':'15','weight':'bold','color':'black'} sm.taylor_diagram(sdev,crmsd,ccoef) plt.title("Example01?Of?taylor_diagram()?in?Python",fontdict=text_font,pad=35)Example01 Of taylor_diagram() in Python「樣例二:」
sm.taylor_diagram(sdev,crmsd,ccoef,?markerLabel?=?label,titleOBS?=?'Observation',markerLabelColor?=?'r',?tickRMS=?np.arange(0,30,10),tickRMSangle?=?110.0,?colRMS?=?'m',?styleRMS?=?':',?widthRMS?=?2.0,tickSTD?=?np.arange(10,30,10),?axismax?=?30.0,?colSTD?=?'b',?styleSTD?=?'-.',?widthSTD?=?1.0,colCOR?=?'k',?styleCOR?=?'--',?widthCOR?=?1.0) text_font?=?{'size':'15','weight':'bold','color':'black'} plt.title("Example02?Of?taylor_diagram()?in?Python",fontdict=text_font,pad=35)這里進行了部分參數的設置,結果如下:
Example02 Of taylor_diagram() in Python「樣例三:」 將值用colorbar表示
sm.taylor_diagram(sdev,crmsd,ccoef,markerDisplayed?=?'colorBar',?titleColorbar?=?'RMSD',locationColorBar?=?'EastOutside',cmapzdata?=?crmsd,?titleRMS?=?'off',tickRMS?=?range(0,30,10),?tickRMSangle?=?110.0,colRMS?=?'m',?styleRMS?=?':',?widthRMS?=?2.0,tickSTD?=?range(10,30,10),?axismax?=?30.0,colSTD?=?'k',?styleSTD?=?'-',?widthSTD?=?1.5,colCOR?=?'k',?styleCOR?=?'--',?widthCOR?=?1.0) text_font?=?{'size':'15','weight':'bold','color':'black'} plt.title("Example03?Of?taylor_diagram()?in?Python",fontdict=text_font,pad=35)Example02 Of taylor_diagram() in Python以上就是使用Python-SkillMetrics庫繪制泰勒圖的具體用法,更多詳細例子可參考Python-SkillMetrics[3]
總結
本期推文,小編簡單介紹了泰勒圖(Taylor diagram)的R和Python繪制方法,這里可以看出,Python在繪制泰勒圖時,其定制化操作可選的操作較多,大家可多了解下~~希望本期推文對大家有所幫助。
參考資料
[1]
R-openair包參數介紹: https://rdrr.io/cran/plotrix/man/taylor.diagram.html。
[2]R-openair::TaylorDiagram()參數介紹: https://davidcarslaw.github.io/openair/reference/TaylorDiagram.html。
[3]Python-SkillMetrics資料: https://github.com/PeterRochford/SkillMetrics/wiki。
各位伙伴們好,詹帥本帥搭建了一個個人博客和小程序,匯集各種干貨和資源,也方便大家閱讀,感興趣的小伙伴請移步小程序體驗一下哦!(歡迎提建議)
推薦閱讀
牛逼!Python常用數據類型的基本操作(長文系列第①篇)
牛逼!Python的判斷、循環和各種表達式(長文系列第②篇)
牛逼!Python函數和文件操作(長文系列第③篇)
牛逼!Python錯誤、異常和模塊(長文系列第④篇)
總結
以上是生活随笔為你收集整理的超干货 | 泰勒图(Taylor diagram)绘制方法大汇总的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 9个必知的Python操作文件/文件夹方
- 下一篇: 再见Xshell!这个开源的终端工具更酷