在R中绘制对数刻度

时间:2012-09-23 17:05:57

标签: r graph statistics plot logarithm

我正在尝试绘制一个对数刻度,但我继续得到这个错误:

Error in plot.window(...) : invalid "log=1/h" specification. 

我不确定我做错了什么。以下是我的代码:

   #function
function(stepsize, temp_val, counter) {
  while(counter < 0) {
    counter <- counter + stepsize
    px_norm <- dnorm(counter, mean = 0, sd = .04)
    temp_val <- temp_val + px_norm }
  temp_val <- 2*temp_val
  temp_val <- temp_val *(stepsize/2)
  print(temp_val, digits = 12)
}

#Initial step size
h <- .01 
while (h > .00001) {
  x <- calc_error(h, 0, -5) #Gives me a result around .5
  err <- x - (exp(-.02)*0.5)
  plot(1/h, err, log = "1/h")
  h <- h/10 }

基本上,在这个简短的函数中,我试图表明随着步长的增加,真实答案的误差会减少。但是,我在绘制这个问题时遇到了麻烦。任何帮助将不胜感激。感谢

3 个答案:

答案 0 :(得分:13)

这应该是创建情节的简单方法:

h <- 10^-seq(2, 4)
err <- lapply(h, function(x) calc_error(x, 0, -5) - (exp(-.02) * .5))
plot(1/h, err, log = "x")

enter image description here

答案 1 :(得分:7)

plot(1/h, err, log = "1/h")

log应该是您在日志空间中想要的绘图轴,而不是实际数据。

plot(1/h, err, log = "x")

将在日志空间中绘制x轴

答案 2 :(得分:2)

我猜你想要这样的东西:

i <- 1
h <- 0.01
err <- vector(0,mode="numeric")

while (h[i] > .00001) {
  x <- rnorm(1,mean=0.5,sd=0.05) #use calc_error instead
  err <- c(err,x - (exp(-.02)*0.5))
  i <- i+1
  h <- c(h,h[i-1]/10) }

plot(1/h[-length(h)],err,log="x")