【问题标题】:When plotting a curve in R, a piece of the curve gets cut off, not sure why在 R 中绘制曲线时,一条曲线被截断,不知道为什么
【发布时间】:2017-09-02 06:50:53
【问题描述】:

我正在尝试绘制这个公式。当 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 值的范围,是吗?如果有人可以向我解释,这将是惊人的!谢谢!

【问题讨论】:

  • 请通过单击问题上的复选标记将您的问题标记为已回答。

标签: r plot curve-fitting


【解决方案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)

【讨论】:

    【解决方案2】:

    这主要是因为my_formula(0)Inf

    所以在curve 中绘制from=0, to=13 意味着您的前两个值是默认值(@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))
    

    【讨论】:

    • 谢谢你,这工作!制作“from=0.0001”而不是 from=0 的更简单版本会有所不同,我的函数会作为一个整体显示。
    猜你喜欢
    • 1970-01-01
    • 2019-02-27
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-08-31
    相关资源
    最近更新 更多