在 R 中绘制曲线时,一条曲线被切断,不知道为什么

When plotting a curve in R, a piece of the curve gets cut off, not sure why

我正在尝试绘制这个公式。当 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,实际上我得到了我需要的东西 put from=-4.8 但我不知道为什么会这样。事实上 x 不会小于 0,from/to 应该代表 x 值的范围,是吗?如果有人能向我解释,那就太棒了!谢谢!

默认情况下,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)

这主要是因为 my_formula(0)Inf:

所以在 curve 中绘制 from=0, to=13 意味着您的前 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))