-
泰勒图(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 sm
data = 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在绘制泰勒图时,其定制化操作可选的操作较多,大家可多了解下~~希望本期推文对大家有所帮助。