3

計算結果を段階的にプロットするためにどのオプション(およびパッケージ)を使用しますか?

非常に長い時間続く計算の結果をプロットしたいと思います。そして、いくつかの結果を見るために最後まで待ちたくありません。毎回plotコマンドを起動するのは非常に遅いため、すべてのポイントをプロットすることはお勧めできません。代わりに、Nポイントごとにプロットします(ベクトルに保存します)。

たとえば、フィボナッチ数列でそれを行う場合、10回の反復ごとに結果をプロットするために、ループを2つのネストされたループに分割します。

fibo=rep(0,112);fibo[1]=0;fibo[2]=1;
plot(fibo)              #to initialize 
for(ii in 0:10) {
  for(jj in 0:9) {
    fibo[ii*10+jj+3]=fibo[ii*10+jj+2]+fibo[ii*10+jj+1];
  }
plot(fibo)
}

ただし、前の反復のグラフは保持されません。どうすればいいですか?数が急激に増加するため、これは良い例ではありません。また、プロットの初期化では、最大y値が事前にわかりません。たぶん、他のより良いグラフパッケージを使用する方が良いでしょうか?

4

1 に答える 1

3

pointsプロットするポイントを設定し、この基準が満たされた場合にのみ追加することで、これを行う方法の簡単な例を次に示します。

# set the frequency with which to plot points
plotfreq <- 10

# set the x and y limits of the graph
x.limits <- c(1,100)
y.limits <- c(0,100)

# initialise a vector and open a plot
result <- vector(mode="numeric",length=100)
plot(result,ylim=y.limits,xlim=x.limits,type="n")

# do the plotting
plot.iterations <- seq(plotfreq,length(result),by=plotfreq)
for (i in seq_along(result)) {
  result[i] <- result[i] + i

  # only plot if the data is at the specified interval
  if (i %in% plot.iterations) {
    points(i,result[i])
  }

}
于 2013-03-26T02:17:38.577 に答える