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


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。非经特殊声明,原始代码版权归原作者所有,本译文未经允许或授权,请勿转载或复制。