在泰勒图中包括偏差
Including bias in the taylor diagram
我正在模拟地表温度并将其与 MODIS 数据进行比较。为了比较不同的模拟,我想使用泰勒图。我能够使用 R
中的 plotrix
为不同的模拟制作基本的泰勒图。但是,有没有办法在图中包含偏差?我尝试了以下; Adding bias in Taylor diagram in R。
但是我的身材看起来像
我对 R
比较陌生,所以如果有人能帮助我就太好了。
此外,在进行一些搜索时,我遇到了另一种表示偏见的方式,如
在 plotrix 中是否可以像这样绘制带有偏差的泰勒图?我发现此选项更好,因为我要比较的模型不止一个,如果我为每个偏差绘制向量和线条,绘图将变得混乱。
以下代码说明了一种创建以偏差为颜色的绘图的方法。必须为每个模型计算偏差(在代码中分配任意值)。在此之后,可以创建偏差的调色板,然后根据该模型的偏差颜色箱将颜色分配给每个点(模型)。可以使用该模型的特定颜色单独绘制点(模型)。可以在最后添加偏差的颜色条。
library(plotrix) # for taylor diagram
library(RColorBrewer) # for color palette
# setting random number generator
set.seed(10)
# fake some reference data
ref<-rnorm(30,sd=2)
model1<-ref+rnorm(30)/2 # add a little noise for model1
model2<-ref+rnorm(30) # add more noise for model2
model3<-ref+rnorm(30)*1.1 # add more noise for model3
model4<-ref+rnorm(30)*1.5 # add more noise for model4
# making up bias values for each model
bias1 <- 0.5
bias2 <- -1
bias3 <- 0.9
bias4 <- -0.25
# making color values
num_cols <- 8 # number of colors for bias
cols <- brewer.pal(num_cols,'RdYlGn') # making color palette, many other palettes are available
# making vector of color breaks
# breaks define the regions for each color
min_bias <- -1 # minimum bias
max_bias <- 1 # maximum bias
col_breaks <- seq(min_bias,max_bias,(max_bias - min_bias)/(num_cols))
# assigning colors based on bias
# color index assigned based on the value of the bias
col1 <- cols[max(which( col_breaks <= bias1))]
col2 <- cols[max(which( col_breaks <= bias2))]
col3 <- cols[max(which( col_breaks <= bias3))]
col4 <- cols[max(which( col_breaks <= bias4))]
# display the diagram and add points for each model
# use color assigned for each model for that model's point
taylor.diagram(ref,model1,col=col1)
taylor.diagram(ref,model2,col=col2,add=T)
taylor.diagram(ref,model3,col=col3,add=T)
taylor.diagram(ref,model4,col=col4,add=T)
# adding color bar
color.legend(3.5,0,4,2 # coordinates
,(col_breaks[1:(length(col_breaks)-1)]+col_breaks[2:length(col_breaks)])/2 # legend values (mean of color value)
,rect.col=cols # colors
,gradient='y' # vertical gradient
)
我正在模拟地表温度并将其与 MODIS 数据进行比较。为了比较不同的模拟,我想使用泰勒图。我能够使用 R
中的 plotrix
为不同的模拟制作基本的泰勒图。但是,有没有办法在图中包含偏差?我尝试了以下; Adding bias in Taylor diagram in R。
但是我的身材看起来像
我对 R
比较陌生,所以如果有人能帮助我就太好了。
此外,在进行一些搜索时,我遇到了另一种表示偏见的方式,如
在 plotrix 中是否可以像这样绘制带有偏差的泰勒图?我发现此选项更好,因为我要比较的模型不止一个,如果我为每个偏差绘制向量和线条,绘图将变得混乱。
以下代码说明了一种创建以偏差为颜色的绘图的方法。必须为每个模型计算偏差(在代码中分配任意值)。在此之后,可以创建偏差的调色板,然后根据该模型的偏差颜色箱将颜色分配给每个点(模型)。可以使用该模型的特定颜色单独绘制点(模型)。可以在最后添加偏差的颜色条。
library(plotrix) # for taylor diagram
library(RColorBrewer) # for color palette
# setting random number generator
set.seed(10)
# fake some reference data
ref<-rnorm(30,sd=2)
model1<-ref+rnorm(30)/2 # add a little noise for model1
model2<-ref+rnorm(30) # add more noise for model2
model3<-ref+rnorm(30)*1.1 # add more noise for model3
model4<-ref+rnorm(30)*1.5 # add more noise for model4
# making up bias values for each model
bias1 <- 0.5
bias2 <- -1
bias3 <- 0.9
bias4 <- -0.25
# making color values
num_cols <- 8 # number of colors for bias
cols <- brewer.pal(num_cols,'RdYlGn') # making color palette, many other palettes are available
# making vector of color breaks
# breaks define the regions for each color
min_bias <- -1 # minimum bias
max_bias <- 1 # maximum bias
col_breaks <- seq(min_bias,max_bias,(max_bias - min_bias)/(num_cols))
# assigning colors based on bias
# color index assigned based on the value of the bias
col1 <- cols[max(which( col_breaks <= bias1))]
col2 <- cols[max(which( col_breaks <= bias2))]
col3 <- cols[max(which( col_breaks <= bias3))]
col4 <- cols[max(which( col_breaks <= bias4))]
# display the diagram and add points for each model
# use color assigned for each model for that model's point
taylor.diagram(ref,model1,col=col1)
taylor.diagram(ref,model2,col=col2,add=T)
taylor.diagram(ref,model3,col=col3,add=T)
taylor.diagram(ref,model4,col=col4,add=T)
# adding color bar
color.legend(3.5,0,4,2 # coordinates
,(col_breaks[1:(length(col_breaks)-1)]+col_breaks[2:length(col_breaks)])/2 # legend values (mean of color value)
,rect.col=cols # colors
,gradient='y' # vertical gradient
)