6

次の質問があります:

set.seed(1234)
dis = seq(1, 800, 10)
 yvar = rnorm(length (dis), 50, 10)
myd <- data.frame (xvar = dis, yvar = yvar, yvarL = 
yvar - rnorm (length (yvar),5, 1), yvarU = yvar + rnorm (length (yvar), 5, 1))
plot(myd$xvar,myd$yvar,pch=19,cex=.75,col="blue")
points(myd$xvar,myd$yvarL,col="gray", pch=19,cex=.5)
points(myd$xvar,myd$yvarU,col="gray", pch=19,cex=.5)

Yには、Y、信頼度の上限と下限の3つの値があります。軸の2つの間隔の間に陰影を付けたいと思います。グラフの残りの部分はポイントのみになります。仮定された製品グラフは類似している必要があります(正確ではありません)。

ここに画像の説明を入力してください

myd $ xvarで、たとえば650〜690と210〜280の2つの間隔の間で折れ線グラフを作成するには、どうすればよいですか。この投稿に基づいてポリゴットフィッティングを試みましたが(Rのxyカーブプロット内のシェーディング)、成功しませんでした。

polygon(c(myd$xvar[1:200], myd$xvar[200:1]), c(myd$xvar[1:200],
   myd$yvar[200:1]), col="gray")
4

2 に答える 2

4

データに関する 1 つの問題は、myd の観測値が 80 個しかないのに、200 個をプロットしようとしているということです... x 変数を 2 回polygon()(そのまま 1 回、逆順で 1 回)、次に y 変数 (最初は低い方) に入力するだけです。 limit そのまま、次に逆順で上限)。次に、シェーディングがあります。

polygon(c(myd$xvar[20:40], myd$xvar[40:20]),c(myd$yvarL[20:40],
 myd$yvarU[40:20]), col="gray")

ただし、シェーディングはいくつかのポイントをカバーするため、それらを再プロットする必要があります。

points(myd$xvar,myd$yvar,pch=19,cex=.75,col="blue")
points(myd$xvar,myd$yvarL,col="gray", pch=19,cex=.5)
points(myd$xvar,myd$yvarU,col="gray", pch=19,cex=.5)

編集: 以下の rfan は、インデックスではなく x 座標に基づいてシェーディングし、シェーディングされた領域に線を追加するよう求めます。このために、関連するポイントのインデックスを抽出するのが理にかなっています (myd$xvar がソートされていることを使用します)。

index <- which(myd$xvar>=200 & myd$xvar<=400)

次に、このインデックスに基づいてプロットします。これは、必要に応じて簡単に変更できます。

polygon(c(myd$xvar[index], myd$xvar[rev(index)]),c(myd$yvarL[index], 
 myd$yvarU[rev(index)]), col="gray")

ここで、線と追加の点を追加します。

lines(myd$xvar[index],myd$yvar[index],pch=19,cex=.75,col="blue",type="o")
points(myd$xvar,myd$yvarL,col="gray", pch=19,cex=.5)
points(myd$xvar,myd$yvarU,col="gray", pch=19,cex=.5)
于 2012-10-24T16:08:20.130 に答える
2

ステファンと同様の回答:

plot(myd$xvar,myd$yvar,pch=19,cex=.75,col="blue")
points(myd$xvar,myd$yvarL,col="gray", pch=19,cex=.5)
points(myd$xvar,myd$yvarU,col="gray", pch=19,cex=.5)
polygon(c(smyd$xvar[1:nrow(smyd)], smyd$xvar[nrow(smyd):1]), 
 c(smyd$yvarL[1:nrow(smyd)], smyd$yvarU[nrow(smyd):1]), col="gray", border = NA)
points(smyd$xvar,smyd$yvar,col="red", pch=19,cex=1.5)
lines (smyd$xvar,smyd$yvar,col="red", pch=19,cex=1.5)

polygon(c(smyd1$xvar[1:nrow(smyd1)], smyd1$xvar[nrow(smyd1):1]),
c(smyd1$yvarL[1:nrow(smyd1)], smyd1$yvarU[nrow(smyd1):1]), col="yellow", border = NA)
points(smyd1$xvar,smyd1$yvar,col="green4", pch=19,cex=1.5)
lines (smyd1$xvar,smyd1$yvar,col="green4", pch=19,cex=1.5)

あなたにあげる: ここに画像の説明を入力

于 2012-10-24T19:19:10.520 に答える