2016-05-12 5 views

答えて

4

実際には、curveは機能しますが、表示されません。私はf1f2によってあなたの例の関数を定義している

f1 <- function(x) 0.044*x+1.638 
f2 <- function(x) 0.3438*x+0.5155 
x0 <- seq(0, 1, by = 0.1) 

:これを説明するために、我々は、コードのいくつかのより多くの行を追加します。私はまた、[0,1]の間に11個のサンプリングポイントをとって評価しプロットします。なぜこの範囲?引数なしで指定なしでfromto?curveを参照)、curveはこの範囲でプロットします。 f1の関数値がそれほど高くf2より

>f1(x0) 
[1] 1.6380 1.6424 1.6468 1.6512 1.6556 1.6600 1.6644 1.6688 1.6732 1.6776 
[11] 1.6820 
> f2(x0) 
[1] 0.51550 0.54988 0.58426 0.61864 0.65302 0.68740 0.72178 0.75616 0.79054 
[10] 0.82492 0.85930 

さて、これを見てみましょう。 curveを最初に呼び出してf1をプロットすると、ylimがおおよそf1(x)の範囲になるように修正されます。したがって、f2(x)を追加すると、これはこのylimには表示されません。

は、最初の共有 ylimを選択することで、代わりにこれを試してみてください:

ylim <- range(c(f1(x0), f2(x0))) 
curve(f1, ylim = ylim) 
curve(f2, add=TRUE, col = "red") 

Plot

この種の問題は、一般的な落とし穴です。複数のオブジェクトを1つのグラフにプロットする場合、すべてのオブジェクトを保持するのに十分な大きさのxlimylimを設定する必要があります。 Rがこれらを「オンザフライ」で調整するとは思わないでください。これはできません。プロット範囲は、最初のプロットが作成されるときに決定されます。

+2

優れた説明、特に最後の段落。 +1 – bgoldst

関連する問題