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


R hist 直方圖


R語言 hist 位於 graphics 包(package)。

說明

通用函數hist 計算給定數據值的直方圖。如果 plot = TRUE ,則 class "histogram" 的結果對象在返回之前由 plot.histogram 繪製。

用法

hist(x, ...)

## Default S3 method:
hist(x, breaks = "Sturges",
     freq = NULL, probability = !freq,
     include.lowest = TRUE, right = TRUE, fuzz = 1e-7,
     density = NULL, angle = 45, col = "lightgray", border = NULL,
     main = paste("Histogram of" , xname),
     xlim = range(breaks), ylim = NULL,
     xlab = xname, ylab,
     axes = TRUE, plot = TRUE, labels = FALSE,
     nclass = NULL, warn.unused = TRUE, ...)

參數

x

需要直方圖的值的向量。

breaks

之一:

  • 給出直方圖單元之間的斷點的向量,

  • 計算斷點向量的函數,

  • 給出直方圖單元格數量的單個數字,

  • 命名計算單元格數量的算法的字符串(參見“詳細信息”),

  • 計算細胞數量的函數。

在最後三種情況下,該數字僅供參考;由於斷點將設置為 pretty 值,因此數量限製為 1e6(如果更大,則會發出警告)。如果 breaks 是一個函數,則將 x 向量作為唯一的參數提供給它(並且中斷的數量僅受可用內存量的限製)。

freq

邏輯性;如果 TRUE ,直方圖圖形是頻率的表示,即結果的 counts 分量;如果 FALSE ,則繪製概率密度、分量 density (以便直方圖的總麵積為 1)。當且僅當 breaks 等距時(且未指定 probability),默認為 TRUE

probability

!freq 的別名,用於 S 兼容性。

include.lowest

邏輯性;如果 TRUE ,則等於 breaks 值的 x[i] 將包含在第一個(或最後一個,對於 right = FALSE )條中。除非 breaks 是向量,否則這將被忽略(並帶有警告)。

right

邏輯性;如果 TRUE ,則直方圖單元格是右閉(左開)間隔。

fuzz

非負數,適用於數據為 “pretty” 且某些觀察值 x[.] 接近但不完全在 break 上的情況。對於計數,使用與 fuzz 成比例的模糊中斷。默認值有時不是最佳的。

density

陰影線的密度,以每英寸行數為單位。 NULL的默認值意味著不繪製陰影線。 density 的非正值也會抑製陰影線的繪製。

angle

陰影線的斜率,以度為單位的角度(逆時針)。

col

用於填充條形的顏色。

border

條形周圍邊框的顏色。默認情況下使用標準前景色。

main , xlab , ylab

主標題和軸標簽:title() 的這些參數在此處獲得 “smart” 默認值,例如,默認 ylab"Frequency" iff freq 為 true。

xlim , ylim

具有合理默認值的 x 和 y 值的範圍。請注意, xlim 不用於定義直方圖(中斷),而僅用於繪圖(當 plot = TRUE 時)。

axes

合乎邏輯的。如果TRUE(默認),則在繪製繪圖時繪製軸。

plot

合乎邏輯的。如果TRUE(默認),則繪製直方圖,否則返回中斷和計數列表。在後一種情況下,如果指定的(通常是圖形的)參數僅適用於 plot = TRUE 情況,則會發出警告。

labels

邏輯或字符串。如果不是FALSE,則另外在條形頂部繪製標簽;請參閱plot.histogram

nclass

數字(整數)。僅對於 S(-PLUS) 兼容性,對於標量或字符參數,nclass 相當於 breaks

warn.unused

合乎邏輯的。如果是 plot = FALSEwarn.unused = TRUE ,則當圖形參數傳遞給 hist.default() 時會發出警告。

...

進一步的參數和graphical parameters傳遞給plot.histogram,然後傳遞給titleaxis(如果plot = TRUE)。

細節

的定義直方圖因來源而異(帶有 country-specific 偏差)。R等間距中斷的默認設置(也是默認設置)是繪製由以下定義的單元格中的計數breaks。因此,矩形的高度與落入單元中的點數成正比,麵積也是如此假如中斷是等距的。

非等間距中斷的默認設置是給出區域一的圖,其中矩形的麵積是落在單元格中的數據點的分數。

如果 right = TRUE(默認),則直方圖單元格的間隔為 形式,即,它們包括右側端點,但不包括左側端點,當 include.lowestTRUE 時第一個單元格除外 .

對於 right = FALSE ,間隔的形式為 ,而 include.lowest 表示“包括最高值”。

在對 bin 邊的條目進行計數時,應用 乘以 bin 大小中位數(對於超過 4 個 bin,否則將替換中位數)的數值容差。這不包含在報告的 breaks 中,也不包含在 density 的計算中。

breaks 的默認值為 "Sturges" :請參閱 nclass.Sturges 。提供算法的其他名稱是 "Scott""FD" /"Freedman-Diaconis" (具有相應的函數 nclass.scottnclass.FD )。忽略大小寫並使用部分匹配。或者,可以提供一個函數,該函數將計算預期的斷點數量或實際斷點作為 x 的函數。

"histogram" 類的對象,它是一個包含組件的列表:

breaks

單元邊界(= breaks 如果它是一個向量)。這些是名義上的中斷,不帶有邊界模糊。

counts

整數;對於每個單元格,其中x[] 的數量。

density

,作為估計的密度值。如果 all(diff(breaks) == 1) ,則它們是相對頻率 counts/n 並且通常滿足 ,其中 = breaks[i]

mids

單元格中點。

xname

具有實際 x 參數名稱的字符串。

equidist

邏輯,指示breaks之間的距離是否都相同。

例子

op <- par(mfrow = c(2, 2))
hist(islands)
utils::str(hist(islands, col = "gray", labels = TRUE))

hist(sqrt(islands), breaks = 12, col = "lightblue", border = "pink")
##-- For non-equidistant breaks, counts should NOT be graphed unscaled:
r <- hist(sqrt(islands), breaks = c(4*0:5, 10*3:5, 70, 100, 140),
          col = "blue1")
text(r$mids, r$density, r$counts, adj = c(.5, -.5), col = "blue3")
sapply(r[2:3], sum)
sum(r$density * diff(r$breaks)) # == 1
lines(r, lty = 3, border = "purple") # -> lines.histogram(*)
par(op)

require(utils) # for str
str(hist(islands, breaks = 12, plot =  FALSE)) #-> 10 (~= 12) breaks
str(hist(islands, breaks = c(12,20,36,80,200,1000,17000), plot = FALSE))

hist(islands, breaks = c(12,20,36,80,200,1000,17000), freq = TRUE,
     main = "WRONG histogram") # and warning

## Extreme outliers; the "FD" rule would take very large number of 'breaks':
XXL <- c(1:9, c(-1,1)*1e300)
hh <- hist(XXL, "FD") # did not work in R <= 3.4.1; now gives warning
## pretty() determines how many counts are used (platform dependently!):
length(hh$breaks) ## typically 1 million -- though 1e6 was "a suggestion only"

## R >= 4.2.0: no "*.5" labels on y-axis:
hist(c(2,3,3,5,5,6,6,6,7))

require(stats)
set.seed(14)
x <- rchisq(100, df = 4)

## Histogram with custom x-axis:
hist(x, xaxt = "n")
axis(1, at = 0:17)


## Comparing data with a model distribution should be done with qqplot()!
qqplot(x, qchisq(ppoints(x), df = 4)); abline(0, 1, col = 2, lty = 2)

## if you really insist on using hist() ... :
hist(x, freq = FALSE, ylim = c(0, 0.2))
curve(dchisq(x, df = 4), col = 2, lty = 2, lwd = 2, add = TRUE)

參考

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

Venables, W. N. and Ripley. B. D. (2002) Modern Applied Statistics with S. Springer.

也可以看看

nclass.Sturgesstemdensitytruehist 位於包 MASS 中。

帶有垂直條的典型圖不是直方圖。對於此類條形圖,請考慮 barplotplot(*, type = "h")

相關用法


注:本文由純淨天空篩選整理自R-devel大神的英文原創作品 Histograms。非經特殊聲明,原始代碼版權歸原作者所有,本譯文未經允許或授權,請勿轉載或複製。