在R中绘制曲线时,曲线的一部分被切断,不确定为什么

时间:2017-04-07 02:36:39

标签: r plot curve-fitting

我试图绘制这个公式。当x从右边接近0时,y应该接近无穷大,所以我的曲线应该向上靠近y轴。相反,它会在y = 23左右时被切断。

my_formula = function(x){7.9*x^(-0.5)-1.3}
curve(my_formula,col="red",from=0 ,to=13, xlim=c(0,13),ylim=c(0,50),axes=T, xlab=NA, ylab=NA)

我试着和from= parameter一起玩,实际上得到了我需要的东西 放from=-4.8,但我不知道为什么会这样。事实上x并不小于0,并且from / to应该代表x值的范围,是吗?如果有人能向我解释,这将是惊人的!谢谢!

2 个答案:

答案 0 :(得分:1)

默认情况下,curve仅选择(from, to)范围内的101个x值,由n参数的默认值设置。在您的情况下,这意味着没有多少值足够接近0以显示函数的完整行为。增加使用n=500之类的值绘制的值的数量有助于:

curve(my_formula,col="red",from=0 ,to=13, 
      xlim=c(0,13),ylim=c(0,50),axes=T, xlab=NA, ylab=NA, 
      n=500)

答案 1 :(得分:1)

这主要是因为my_formula(0)Inf

因此在from=0, to=13中绘制curve表示默认情况下您的前2个值(@Marius注释为101分):

# x
seq(0, 13, length.out=101)[1:2]
#[1] 0.00 0.13

# y
my_formula(seq(0, 13, length.out=101)[1:2])
#[1]      Inf 20.61066

并且R不会绘制无限值来连接从第一个点到第二个点的线。

如果您的x轴上的0尽可能接近系统上的curve(my_formula, col="red", xlim=c(0 + .Machine$double.eps, 13), ylim=c(0,50)) ,那么您可以将此工作做好。例如:

Cleaners