3

散布図をプロットしてplot(x, y)いて、それを対数値にしたいので、次のようにしますplot(log(x), log(y))x一部の値が 0 であり、したがってプロットにない場合に対処したいと思いますが、対応するy値はゼロではありません。

散布図をログ ティックで自然数の値で表示したいと思います。つまりlog2、ティックがあれば、2^0, 2^1, 2^2, ...これらのポイントを見逃さないように、スケール上に 0 の値をプロットすることもできます。

次に例を示します。

> x = c(0, 1, 20, 100, 200, 500)
> y = c(1, 16, 32, 105, 300, 50)
> plot(x, y)

6つのポイントがあります。私が使用する場合:

> plot(log2(x), log2(y))

x[0]、y[0] が省略されているため (x 値は 0)、プロットされるのは 5 つだけです。したがって、対数値をプロットしたいのですが、目盛りラベルは単純に対数スケールでマークされた自然数になります。次に、同じ軸上に 0、2^0 (もちろん 1)、2^1、2^2 などを簡単に配置できます。次に、対数スケールを維持しながら、点 (x[0], y[0]) が引き続きプロットされます。

補足:例を挙げて非常に合理的なことを尋ねる投稿に反対票を投じるのは公平ではないと思います。これは明らかにトピックと関連性があり、対数値で物事をプロットし、境界/エッジケースを気にするほぼすべての人に出てきます.

(すべてのポイントに任意の小さな定数を追加することでこれに対処する人がいることは知っていますが、面倒なので避けたいと思います。)ありがとう

4

1 に答える 1

1

対数スケールで x 対 y をプロットしたいことがわかったら?

latticeとを使用した例latticeExtra

# Some reproducible data
tm <- data.frame(x=seq(0,10,1),y=seq(0,10,1))
library(lattice) 
library(latticeExtra) 
xyplot(x ~ y , data=tm, 
       scales= list(x=list(log=2), 
                    y=list(log=2)), 
       xscale.components = xscale.components.logpower, ## to get pretty scales
        yscale.components = yscale.components.logpower 
) 

ここに画像の説明を入力

于 2013-02-06T01:48:03.807 に答える