0

1 から 7 までの y 軸に目盛りを表示する両対数プロットがあります。関数の各目盛り間の間隔を取得したいと思います。

> par("yaxp")
[1]  1  7 -6

par("yaxp")[3] が 1 になることを期待していました。

なぜ-6なのですか?Rに目盛り間の間隔を返すようにするにはどうすればよいですか?

4

2 に答える 2

1

他のヘルプで述べたように、ログが使用される場合の意味はxaxp少し異なります。しかし、ここでは n が負であるため、まだ線形の場合です。他の作品では、ステップ間の距離は

 (1-7)/(-6) = 1

を使用して、目盛りをプロットするためにaxTicks内部で使用される目盛りを取得できます。axesここでは、 の異なる値を表示するために のヘルプから変更された例axTicksを示しますn

op <- par(mfrow = c(4, 1))
for(x in 9999 * c(1/99999,1, 2, 8)) {
  plot(x, 9, log = "x")
  cat(formatC(par("xaxp"), width = 5),";", T <- axTicks(1),"\n")
  rug(T, col =  adjustcolor("red", 0.5), lwd = 4)
}
par(op)

 ## n negative (your case): linear case 
 0.05  0.25    -4 ; 0.05 0.1 0.15 0.2 0.25 
 ## n =3 :     k 10^j with k in {1,2,5} & j in par("usr")[1:2]
 1000 1e+05     3 ; 200 500 1000 2000 5000 10000 20000 50000 1e+05 2e+05 5e+05 
 ## n =2     k 10^j with k in {1,5} & j in par("usr")[1:2]
 1000 1e+06     2 ; 500 1000 5000 10000 50000 1e+05 5e+05 1e+06 
 ## n =1 :  10^j with j in par("usr")[1:2]
 1000 1e+07     1 ; 1000 10000 1e+05 1e+06 1e+07 
于 2013-04-04T09:49:28.113 に答える
1

これは間違いなく対数スケールであるという事実と関係があります

?parドキュメントから:

xaxp - c(x1, x2, n) の形式のベクトルで、par("xlog") が false の場合に、極端な目盛りの座標と目盛り間の間隔の数を指定します。それ以外の場合、対数座標がアクティブな場合、3 つの値は異なる意味を持ちます。狭い範囲の場合、n は負であり、ティックは線形の場合と同様です。それ以外の場合、n は 1:3 で、ケース番号を指定します。 x1 と x2 は、ユーザー座標内の 10 の最小乗数と最大乗数 (10 ^ par("usr")[1:2]) です。(「usr」座標はここで log10 変換されます!)

見る:

x<-1:100
y<-1:100
plot(x,y,log="y")
par("yaxp")
par("ylog")

に比べ

plot(log(x),log(y))
par("ylog")
par("yaxp")
于 2013-04-04T09:17:52.383 に答える