Rがplot()
関数のadd
パラメータと一致しないのはなぜですか?それは時々動作し、時々動作しません!この例では、パラメータ_add=TRUE
_を問題なく受け取ります。
_plot(0:10, 0:10*3)
plot(identity, add=TRUE, xlim=c(0,10))
plot(function (x) { sin(x)*10 }, add=TRUE, xlim=c(0,10))
_
しかし、私が発行するとき
_plot(c(2, 3, 4), c(20,10,15), add=TRUE, pch="A")
_
動かない!! 「追加」はグラフィカルパラメータではないことを示しています。
代わりにpoints()
を使用するように書いてはいけません。私はそれを使用できることを知っています。 Rの奇妙な動作を理解したいのですが、なぜ動作するのか、動作しないのですか?
これは確かに迷惑で一貫性がありませんが、それは明白です。
編集:identity
が組み込みオブジェクト(識別関数)であるという事実から逃れました(そのため、問題は実際に再現可能です)。
identity
はクラスのオブジェクトです-function
-plot
メソッド(_plot.function
_)にadd
引数を指定しますが、デフォルトのplot
メソッドはnotにadd
引数があります。
一般に、オブジェクトbar
をプロットする場合は、class(bar)
を試してください。クラスfoo
の場合は、methods(class="foo")
を試してplotメソッドがあることを確認するか、methods("plot")
を試して_plot.foo
_が存在することを確認します。ヘルプを表示するには_?plot.foo
_を、関数自体を表示するには_plot.foo
_またはgetAnywhere(plot.foo)
を試してください。
これは、plot(0:10, 0:10*3)
またはplot(c(2, 3, 4), c(20,10,15))
を呼び出すと、間接的にplot.default()
が呼び出され、次にplot.xy()
が呼び出されるため、他の2つはあなたが言及する呼び出しはplot.function()
を実行しています。 add
はplot.function()
の引数ですが、plot.xy()
の引数ではありません。
par(new = TRUE)
を設定することでこの不整合を回避できますが、新しい軸ラベルを追加したり、軸を再描画したりしないようにする必要があります。 編集:コメントで指摘されているように、範囲が前のプロットと同じであることを確認する必要があります。例えば。:
_plot(0:10, 0:10*3)
plot(identity, add=T, xlim=c(0,10))
plot(function (x) { sin(x)*10 }, add=T, xlim=c(0,10))
par(new = TRUE)
plot(c(2, 3, 4), c(20,10,15), pch="A",
axes = FALSE, ## don't redraw the axes
xlab = '', ylab = '', ## no fresh axis labels
xlim = c(0,10), ylim = c(0,30)) ## keep the same limits as before
_
Ben Bolkerが言及しているように、methods('plot')
はplot()
の実行時に呼び出すことができるメソッドを示します-異なるメソッドには異なる引数があり、args(plot.foo)
を呼び出すとリストされますまたはヘルプページ_?plot.foo
_