當前位置: 首頁>>代碼示例 >>用法及示例精選 >>正文


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。非經特殊聲明,原始代碼版權歸原作者所有,本譯文未經允許或授權,請勿轉載或複製。