3

plotrixパッケージには、2 つのベクトル (1 つはデータを表し、もう 1 つはモデル出力) をプロットするという関数があります。taylor.diagram

次に例を示します。

require(plotrix)
set.seed(10)
data  <- sort(runif(100, 8,12))
model <- sort(rnorm(100, 10, 4))
taylor.diagram(data, model)

この例では、モデルを改善した後にプロットを更新します。

model2 <- sort(rnorm(100, 10,2))
taylor.diagram(data, model2, add = TRUE)

これを生成するには:

ここに画像の説明を入力

これらのポイントを識別するために、「モデル 1」や「モデル 2」などのラベルを追加するにはどうすればよいですか? (更新:事後ではなく、モデル値から決定されたラベルの位置を使用)

4

3 に答える 3

4

taylor.diagram3 番目の解決策は、テキスト ラベルを含む関数の修正バージョンを作成することです。この場合、やるべきことは、たとえば というパラメーターを追加し、元の関数のtextへの呼び出しの後にpoints(右中括弧の 2 行前)、行を追加することだけですtext(sd.f * R, sd.f * sin(acos(R)), labels=text, pos=3)

taylor.diagram.modified <- function (ref, model, add = FALSE, col = "red", 
                                    pch = 19, pos.cor = TRUE, xlab = "", ylab = "", 
                                    main = "Taylor Diagram", show.gamma = TRUE, 
                                    ngamma = 3, gamma.col = 8, sd.arcs = 0, ref.sd = FALSE, 
                                    grad.corr.lines = c(0.2, 0.4, 0.6, 0.8, 0.9), pcex = 1, 
                                    cex.axis = 1, normalize = FALSE, mar = c(5, 4, 6, 6),
                                    text, ...) #the added parameter
{
    grad.corr.full <- c(0, 0.2, 0.4, 0.6, 0.8, 0.9, 0.95, 0.99,1)
    R <- cor(ref, model, use = "pairwise")
    sd.r <- sd(ref)
    sd.f <- sd(model)
    if (normalize) {

    ... #I didn't copy here the full function because it's quite long: to obtain it
    ... #simply call `taylor.diagram` in the console or `edit(taylor.diagram)`.

            }
            S <- (2 * (1 + R))/(sd.f + (1/sd.f))^2
        }
    }
    points(sd.f * R, sd.f * sin(acos(R)), pch = pch, col = col, 
           cex = pcex)
    text(sd.f * R, sd.f * sin(acos(R)),  #the line to add
         labels=text, cex = pcex, pos=3) #You can change the pos argument to your liking
    invisible(oldpar)
}

text次に、引数にラベル名を指定するだけです。

require(plotrix)
set.seed(10)
data  <- sort(runif(100, 8,12))
model <- sort(rnorm(100, 10, 4))
taylor.diagram.modified(data, model, text="Model 1")
model2 <- sort(rnorm(100, 10,2))
taylor.diagram.modified(data, model2, add = TRUE, text="Model 2")

ここに画像の説明を入力

于 2013-03-11T09:25:03.927 に答える
1

ここに2つのアプローチがあります

  1. example(taylor.diagram)は、凡例を右上隅 ( 1.5*sd(data), 1.5*sd(data)) に配置する適切な方法を示していますが、これには 2 つのポイントに異なる色が必要になります。

  2. 別のオプションは、元のTaylor 2001 リファレンスの方程式に基づいて位置を計算するか、ソース コードからtaylor.diagram関数の近くにコピーすることです。

    dy <- 1.1 # text offset coefficient
    sd.f <- sd(model)
    R <- cor(data, model, use = 'pairwise')
    x <- sd.f * R
    y <- sd.f * sin(acos(R)) + dy * sd.f
    text(x, y, "Model")
    

    モデルごとにこれらを計算する必要がありますが、変更されるのはモデル入力とラベルのみです。おそらく、オフセットも同じに保ちたいと思うでしょう。

于 2013-03-01T16:44:21.597 に答える
0

以下を使用して、基本グラフィックスのすべてにラベルを付けるのと同じ方法text:

text(1.5,0.5,labels = "Model2")
text(3.5,1,labels = "Model1")

ここに画像の説明を入力

于 2013-02-28T23:27:49.653 に答える