2017-12-06 11 views
1

対数であるとき、私は次のことをやっている:に軸の範囲を拡張-1その軸がR

x = c(0, 1, 2, 3, 4, 5) 
y = x^2 
plot(x, y, log="y") 

私が欲しいものは=グラフはまた、(x、y)に私の散布ポイントを示すことがあります(0,0)となる。

私はそれがlog(0) = -Infです。これは私がlog(x)をやっているときに当てはまりますが、ここでは私はlog(x)をやっていません。むしろ、y軸のスケールを対数に変更するだけです。したがって、散乱点(x、y)=(0、0)を表示する方法があるかどうかを知る必要があります。

+3

'y [1]'を '0.1'と置き換えてプロットします。 「0.0001」または「0.000000001」と置き換えて、もう一度やり直してください。なぜ元の目標が達成できないのかを実証します。対数スケールで1と0の間に無限の距離があります。 – Marius

答えて

2

いいえ、あなたが求めているのは数学的には不可能です。log(0) = -Infです。ポイント(0、0)はログスケールプロットに表示することはできません。

ログスケールは、データ値をログ変換し、軸のティックで値を累乗することによって生成されます。たとえば、100をlog-10スケールでプロットするには、最初に100をlog10(100) = 2にログ変換し、対応する軸の目盛りを2から10^2 = 100に変換します。したがって、ログスケールプロットに値0をプロットするには、対応する軸目盛りが10^-Inf = 0であっても、log10(0)を計算する必要があります。

2

y軸が非線形で、必ずしもログスケールではない場合は、以下のようにすることができます。

# transfrom y-values 
ny <- sqrt(y) 
# plot the transformed values 
plot(x, ny, yaxt='n', ylab = "y") 
# label the y-axis 
axis(side = 2, at = ny, labels = y) 

またenter image description here

、あなたは(0)で、その後、あなたはそのnyを経由して行うことができますログを交換したいものを知っているが、私はそこにあるとき、ログスケールを使用して助言していない場合ゼロ。

関連する問題