当前位置: 首页>>代码示例 >>用法及示例精选 >>正文


R pretty 漂亮的断点


R语言 pretty 位于 base 包(package)。

说明

计算大约 n+1 等距 ‘round’ 值的序列,这些值覆盖 x 中的值的范围。选择的值是 10 的 1、2 或 5 倍。

用法

pretty(x, ...)

## Default S3 method:
pretty(x, n = 5, min.n = n %/% 3,  shrink.sml = 0.75,
       high.u.bias = 1.5, u5.bias = .5 + 1.5*high.u.bias,
       eps.correct = 0, f.min = 2^-20, ...)

.pretty(x, n = 5L, min.n = n %/% 3,  shrink.sml = 0.75,
       high.u.bias = 1.5, u5.bias = .5 + 1.5*high.u.bias,
       eps.correct = 0L, f.min = 2^-20, bounds = TRUE)

参数

x

可通过 as.numeric 强制转换为数字的对象。

n

给出所需间隔数的整数。非整数值向下舍入。

min.n

给出最小间隔数的非负整数。如果 min.n == 0pretty(.) 可能返回单个值。

shrink.sml

正数,当 range(x) 非常小时(通常为 0)时默认比例缩小的因子(小于 1)。

high.u.bias

非负数值,通常为 。间隔单位确定为 {1,2,5,10} 乘以 b ,即 10 的幂。较大的 high.u.bias 值有利于较大的单位。

u5.bias

非负数字乘数比 2 更倾向于因子 5。默认值和 ‘optimal’: u5.bias = .5 + 1.5*high.u.bias

eps.correct

整数代码,{0,1,2}之一。如果非 0,则在边界处进行 epsilon 校正,以便结果边界将位于 range(x) 之外;在小情况下,仅在 eps.correct >= 2 时才进行校正。

f.min

正因子乘以.Machine$double.xmin得到最小的“acceptable”cell 这决定了unit算法的。较小cell值设置为 发出信号warning关于“corrected”。新到R4.2.0,:以前f.min = 20被硬编码在算法中。

bounds

a logical指示结果向量是否应该覆盖完整的range(x),即严格包括以下范围x。新到R4.2.0,允许bound=FALSE重现如何R的图形引擎计算轴刻度位置(在GEPretty())。

...

方法的进一步论证。

细节

pretty 忽略 x 中的非有限值。

d <- max(x) - min(x) 。如果 d 不是(非常接近)0,我们让 c <- d/n ,否则或多或少 c <- max(abs(range(x)))*shrink.sml / min.n 。那么,10 个基数 b ,使得

现在根据 和两个 ‘bias’ 系数 high.u.bias u5.bias 确定基本单元 之一。

…………

pretty() 返回大约由 n 递增数字组成的数值向量,十进制表示为 “pretty”。 (在极端范围的情况下,考虑到其他约束,数字不能再是“pretty”;例如,对于pretty(..)

为了便于研究底层 C R_pretty() 函数,.pretty() 返回一个名为 list 。默认情况下,当 bounds=TRUE 时,条目为 lun ,而对于 bounds=FALSE ,条目为 nsnun 和 (a “pretty” ) unit 其中 n* 是整数值(但只有 n 属于 integer 类)。程序员可以使用它来创建漂亮的序列(迭代器)对象。

例子

pretty(1:15)                    # 0  2  4  6  8 10 12 14 16
pretty(1:15, high.u.bias = 2)   # 0  5 10 15
pretty(1:15, n = 4)             # 0  5 10 15
pretty(1:15 * 2)                # 0  5 10 15 20 25 30
pretty(1:20)                    # 0  5 10 15 20
pretty(1:20, n = 2)             # 0 10 20
pretty(1:20, n = 10)            # 0  2  4 ... 20

for(k in 5:11) {
  cat("k=", k, ": "); print(diff(range(pretty(100 + c(0, pi*10^-k)))))}

##-- more bizarre, when  min(x) == max(x):
pretty(pi)

add.names <- function(v) { names(v) <- paste(v); v}
utils::str(lapply(add.names(-10:20), pretty))
## min.n = 0  returns a length-1 vector "if pretty":
utils::str(lapply(add.names(0:20),  pretty, min.n = 0))
sapply(    add.names(0:20),   pretty, min.n = 4)

pretty(1.234e100)
pretty(1001.1001)
pretty(1001.1001, shrink.sml = 0.2)
for(k in -7:3)
  cat("shrink=", formatC(2^k, width = 9),":",
      formatC(pretty(1001.1001, shrink.sml = 2^k), width = 6),"\n")

参考

Becker, R. A., Chambers, J. M. and Wilks, A. R. (1988) The New S Language. Wadsworth & Brooks/Cole.

也可以看看

axTicks 用于计算图中漂亮的轴刻度位置,特别是在对数刻度上。

相关用法


注:本文由纯净天空筛选整理自R-devel大神的英文原创作品 Pretty Breakpoints。非经特殊声明,原始代码版权归原作者所有,本译文未经允许或授权,请勿转载或复制。