【问题标题】:Setting R plot xlim with only the lower bound仅使用下限设置 R plot xlim
【发布时间】:2014-01-18 18:34:09
【问题描述】:

假设我创建了一个像这样的简单图:

xvalues <- 100:200
yvalues <- 250:350
plot(xvalues, yvalues)

但是,我希望 x 轴从 0 开始,并将上限保留为 R 计算的值。我该怎么做?

我知道 xlim=c(lower bound, upper bound) 有一个选项,但我不知道上限是什么。另外,我显然无法指定上限:

> plot(xvalues, yvalues, xlim=c(0))
Error in plot.window(...) : invalid 'xlim' value

如果我不必计算 xvalues 向量的最大值来获得上限,那就太好了,因为这对于非常大的数据向量来说似乎很浪费。

【问题讨论】:

    标签: r


    【解决方案1】:

    您可以使用以下两种方法之一:

    计算限制

    xlim <- c(0, max(xvalues))
    

    xlim 现在可以作为plot 中的xlim 参数提供。

    xvalues <- 100:200
    yvalues <- 250:350
    plot(xvalues, yvalues, xlim=xlim)
    

    par返回限制

    这个有点复杂,但有时很有帮助(在你的情况下肯定是矫枉过正,但为了完整性)。您绘制一次数据,使用par("usr") 在用户坐标中获得绘图区域的限制。现在你可以在你的新情节中使用这些了。

    plot(xvalues, yvalues, xaxs="i")
    xmax <- par("usr")[2]
    plot(xvalues, yvalues, xlim=c(0,xmax))
    

    PS。我使用了xaxs="i",所以结果不会在结尾处有小的扩展。

    【讨论】:

    • 谢谢。关于使用 max() 设置 xlim,我不想运行 max(),因为在非常大的数据集上调用它似乎很浪费。
    • 嗯,我想不出办法来避免这种情况。但是max 功能非常快。对于具有 1 亿个条目的向量,最多需要不到 200 毫秒,试试x &lt;- rnorm(1e8); system.time(max(x))。因此,如果这会成为问题,您的数据一定是巨大的。
    • 谢谢。似乎只是在浪费 CPU 周期。 :P
    【解决方案2】:

    您可以简单地使用您的最大值设置x 的最大值:

    xvalues <- 1:99
    yvalues <- rep(1,99)
    
    
    plot(xvalues, yvalues, xlim = c(0, max(xvalues)) )
    

    【讨论】:

      猜你喜欢
      • 2022-06-10
      • 1970-01-01
      • 2013-07-02
      • 1970-01-01
      • 2023-03-05
      • 1970-01-01
      • 2018-06-27
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多