2012-02-13 19 views
0

私はRでプロットしています私のシンボルの特定の点(例えばアルファ)にシンボルを表示したい軸。私のx軸はログスケールを使用しているので、xy座標(0、アルファ)を​​使ってポイントをプロットすることはできません(私は間違っているかもしれません)。私はこのような何か試してみたR:X軸がログスケールを使用しているときにY軸上の点をプロットする

:しかし

W.range <- range(W) 
Z.range <- range(Z1, Z2) 
# Draw Empty Graph 
plot(W.range, Z.range, type="n", log="x") 
# First Curve 
lines(W, Z1, type="l", lty=1, lwd=1.5, col=1) 
# Second Curve 
lines(W, Z2, type="l", lty=2, lwd=1.5, col=2) 
# Plot Single Point on vertical axis at level alpha (for some constant alpha) 
points(x=0, y=alpha, pch=1, col=1) 

を、私は= 0はx座標に関連するエラーが発生します。助言?いつものように、私は提案を感謝します。

+0

実際のエラー(W、Z1、Z2の値を再現できるようにコピーして貼り付けてください)ETA:alphaアルファベット –

+2

この問題に対処する必要があります:log )== -Inf –

答えて

5

これは、必要に応じて、独自のデータに下塗り、動作するはずです:

# Example data and plot 
x <- y <- 1:100 
alpha <- 44 
plot(x,y, log="x", type="l")  

# Add point 
points(x = 10^(par("usr")[1]), 
     y = alpha, 
     pch = 16, cex=1.3, col = "red", las = 1, 
     xpd = TRUE) # controls whether or not pts straddling the axis are clipped 

enter image description here

私がここで何をしたかを理解するために、?parを見て、私は照会するには、ここの両方を使用するとしていますグラフィカルなパラメータを設定します。特に

、ここでpar("usr")の説明は、上記リンクされたヘルプファイルから、ある:usrによって返されるx座標は、xの対数変換値の点である

‘usr’ A vector of the form ‘c(x1, x2, y1, y2)’ giving the extremes 
     of the user coordinates of the plotting region. When a 
     logarithmic scale is in use (i.e., ‘par("xlog")’ is true, see 
     below), then the x-limits will be ‘10^par("usr")[1:2]’. 
     Similarly for the y-axis. 

。したがって、y軸に点を配置するには、x軸にを与え、log(基数10)はy軸の位置と同じになるようにする必要があります(ユーザー座標で表されます)。 par("usr")[1]は、x軸の下限の位置を取得します。10^(par("usr")[1]は、x軸のその部分だけにプロットされるx値を取得します。

関連する問題