5

プロットをggplotに移動しています。これを除いてほとんどそこにあります(コードはこの前の質問から取得しました):

ggplot プロットは次のようになります

#Set the bet sequence and the % lines
betseq <- 0:700 #0 to 700 bets
perlin <- 0.05 #Show the +/- 5% lines on the graph

#Define a function that plots the upper and lower % limit lines
dralim <- function(stax, endx, perlin) {
  lines(stax:endx, qnorm(1-perlin)*sqrt((stax:endx)-stax))
  lines(stax:endx, qnorm(perlin)*sqrt((stax:endx)-stax))
}

#Build the plot area and draw the vertical dashed lines
plot(betseq, rep(0, length(betseq)), type="l", ylim=c(-50, 50), main="", xlab="Trial Number", ylab="Cumulative Hits")
abline(h=0)
abline(v=35, lty="dashed") #Seg 1
abline(v=185, lty="dashed") #Seg 2
abline(v=385, lty="dashed") #Seg 3
abline(v=485, lty="dashed") #Seg 4
abline(v=585, lty="dashed") #Seg 5

#Draw the % limit lines that correspond to the vertical dashed lines by calling the
#new function dralim.
dralim(0, 35, perlin) #Seg 1
dralim(36, 185, perlin) #Seg 2
dralim(186, 385, perlin) #Seg 3
dralim(386, 485, perlin) #Seg 4
dralim(486, 585, perlin) #Seg 5
dralim(586, 701, perlin) #Seg 6

私はどこまで持っているかを示すことができます(遠くない):

ggplot(a, aes(x=num,y=s, colour=ss)) +geom_line() +stat_smooth(method="lm", formula="y~poly(x,2)") 

私の試み

明確にするために。参照線上にデータをプロットしています (上の画像)。下の画像は、私のデータと、参照線を取得するための私の貧弱な試みを示しています (これは明らかに機能していません)。

4

1 に答える 1

3

あなたが行っていたのは、データに放物線を当てはめることであり、以前に定義された放物線を描くことではありませんでした。あなたがしなければならなかったことを適応させることはそれほど難しくありませんggplot

あなたが持っていたのと同じスタート(ただし、betseq実際にはどこでも使用されていません)

#Set the bet sequence and the % lines
betseq <- 0:700 #0 to 700 bets
perlin <- 0.05 #Show the +/- 5% lines on the graph

線を描画する関数の代わりに、必要なものをgeom_line(リストで) 返す関数を作成します。aes(x=x, y=y)後で宣言で指定される暗示がありますが、ggplotこれは放物線を作成するデータ ポイントを定義します。

#Define a function that plots the upper and lower % limit lines
dralim <- function(stax, endx, perlin) {
  c(geom_line(data = data.frame(x=stax:endx, 
                                y=qnorm(1-perlin)*sqrt((stax:endx)-stax))),
    geom_line(data = data.frame(x=stax:endx, 
                                y=qnorm(perlin)*sqrt((stax:endx)-stax))))
}

繰り返しを保存するには、垂直線の位置を定義します ( )。edges放物線の左右の端点を定義するためにも使用できます ( ranges)。

edges <- data.frame(x=c(0, 35, 185, 285, 485, 585, 700))
ranges <- data.frame(left = edges$x[-nrow(edges)],
                     right = edges$x[-1] + 1)

をビルドしggplotます。すべての垂直線を描画する単一のものがありgeom_vlineます (単一のデータセットで位置を定義したため)。通常とは異なる手順として、 の行 (インデックス) をループし、対応する左右の値 (および)rangesを呼び出します。これは のリストのリストを返しますが、通常の方法でプロットに追加するだけで、すべての行が追加されます。最後の 2 つの scale 呼び出しはラベルを設定するだけで、y 軸の場合は範囲​​を設定します。dralimperlingeom_lines

ggplot(mapping=aes(x=x,  y=y)) +
  geom_vline(data=edges, aes(xintercept = x), linetype="dashed") +
  lapply(seq_len(nrow(ranges)), 
         function(r) {dralim(ranges$left[r], ranges$right[r], perlin)}) +
  scale_y_continuous("Cumulative Hits", lim=c(-50,50)) +
  scale_x_continuous("Trial Number")

ここに画像の説明を入力

于 2012-11-20T22:10:23.067 に答える