私は理解できないような非常に単純な問題があります。私は1つのグラフに2つの方程式をプロットしたい。私はadd = TRUE
を試しましたが、これはうまくいかないようです。"add = TRUE"のとき、curve()は私のプロットにカーブを追加しません
curve(0.044*x+1.638)
curve(0.3438*x+0.5155, add=TRUE)
私は理解できないような非常に単純な問題があります。私は1つのグラフに2つの方程式をプロットしたい。私はadd = TRUE
を試しましたが、これはうまくいかないようです。"add = TRUE"のとき、curve()は私のプロットにカーブを追加しません
curve(0.044*x+1.638)
curve(0.3438*x+0.5155, add=TRUE)
実際には、curve
は機能しますが、表示されません。私はf1
とf2
によってあなたの例の関数を定義している
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個のサンプリングポイントをとって評価しプロットします。なぜこの範囲?引数なしで指定なしでfrom
、to
(?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")
この種の問題は、一般的な落とし穴です。複数のオブジェクトを1つのグラフにプロットする場合、すべてのオブジェクトを保持するのに十分な大きさのxlim
とylim
を設定する必要があります。 Rがこれらを「オンザフライ」で調整するとは思わないでください。これはできません。プロット範囲は、最初のプロットが作成されるときに決定されます。
優れた説明、特に最後の段落。 +1 – bgoldst