【问题标题】:round float(x) to nearest .5 that is > x将 float(x) 舍入到最接近的 0.5 即 > x
【发布时间】:2013-12-18 14:12:30
【问题描述】:

我正在尝试为 R 图制作整齐的 xlimylim 值。我想:1) 将xlim[2] 舍入到 0.5 的最接近倍数,该倍数大于值向量中的最大值;2) 将 xlim[1] 舍入到 0.5 的最接近倍数,该倍数小于值向量。

例如

x <- c(1.2, 2, 3.4)
y <- c(0.7, 2, 3.7)

# The desired lim values are then
xlim <- c(1, 3.5)
ylim <- c(0.5, 4)
plot(x, y, xlim= xlim, ylim= ylim)

提前感谢您的任何提示!

【问题讨论】:

  • 感谢您的解决方案!两者都工作得很好。

标签: r plot limit rounding


【解决方案1】:

pretty 将计算这些值,您可以使用range 选择端点,

range(pretty(x))
[1] 1.0 3.5
range(pretty(y))
[1] 0.5 4.0

【讨论】:

  • pretty 实际上并没有回答 OP 的四舍五入到最接近的 0.5 的问题。 range(pretty(c(1.4,23.1)))[1] 0 25。当然,这些可能是比 1 和 23.5“更好”的限制,但它们不是 OP 要求的限制。
【解决方案2】:
xlim <- c(floor(min(x) * 2) / 2, 
          ceiling(max(x) * 2) / 2)
# [1] 1.0 3.5

ylim <- c(floor(min(y) * 2) / 2, 
          ceiling(max(y) * 2) / 2)
# [1] 0.5 4.0

诀窍是在四舍五入之前乘以 2。然后将结果值除以 2。

【讨论】:

  • min() 代替 x[1],可能需要 max() 代替 tail?
  • @tonytonov 同意。我的解决方案仅限于有序向量。谢谢。
【解决方案3】:

R 包“base”具有生成整洁值的功能 - 它是“漂亮的”。

考虑使用以下代码: 范围(漂亮(x))或 范围(漂亮(y))

【讨论】:

  • 我怀疑这被否决了,因为它与詹姆斯的回答相同。
  • 没问题,为了简单的问题,总是有更多的人同时回答......
猜你喜欢
  • 1970-01-01
  • 2011-09-02
  • 1970-01-01
  • 1970-01-01
  • 2020-04-01
  • 2014-06-20
  • 2012-01-29
  • 1970-01-01
  • 2021-04-17
相关资源
最近更新 更多