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


R histogram 直方图和核密度图


R语言 histogram 位于 lattice 包(package)。

说明

绘制直方图和核密度图,可能以其他变量为条件。

用法

histogram(x, data, ...)
densityplot(x, data, ...)
## S3 method for class 'formula'
histogram(x,
          data,
          allow.multiple, outer = TRUE,
          auto.key = lattice.getOption("default.args")$auto.key,
          aspect = "fill",
          panel = lattice.getOption("panel.histogram"),
          prepanel, scales, strip, groups,
          xlab, xlim, ylab, ylim,
          type = c("percent", "count", "density"),
          nint = if (is.factor(x)) nlevels(x)
          else round(log2(length(x)) + 1),
          endpoints = extend.limits(range(as.numeric(x),
                          finite = TRUE), prop = 0.04),
          breaks,
          equal.widths = TRUE,
          drop.unused.levels =
              lattice.getOption("drop.unused.levels"),
          ...,
          lattice.options = NULL,
          default.scales = list(),
          default.prepanel =
              lattice.getOption("prepanel.default.histogram"),
          subscripts,
          subset)

## S3 method for class 'numeric'
histogram(x, data = NULL, xlab, ...)
## S3 method for class 'factor'
histogram(x, data = NULL, xlab, ...)

## S3 method for class 'formula'
densityplot(x,
            data,
            allow.multiple = is.null(groups) || outer,
            outer = !is.null(groups),
            auto.key = lattice.getOption("default.args")$auto.key,
            aspect = "fill",
            panel = lattice.getOption("panel.densityplot"),
            prepanel, scales, strip, groups, weights,
            xlab, xlim, ylab, ylim,
            bw, adjust, kernel, window, width, give.Rkern,
            n = 512, from, to, cut, na.rm,
            drop.unused.levels =
                lattice.getOption("drop.unused.levels"),
            ...,
            lattice.options = NULL,
            default.scales = list(),
            default.prepanel =
                lattice.getOption("prepanel.default.densityplot"),
            subscripts,
            subset)
## S3 method for class 'numeric'
densityplot(x, data = NULL, xlab, ...)

do.breaks(endpoints, nint)

参数

x

对其执行方法分派的对象。

对于 formula 方法,x 可以是 ~ x | g1 * g2 * ... 形式的公式,指示应根据(可选)变量 g1 的级别生成 x 变量的直方图或核密度估计值, g2 , .... x 应该是数字(或者在 histogram 的情况下可能是一个因子),并且每个 g1 , g2 , ... 应该是因子或带状疱疹。

作为一种特殊情况,公式的右侧可以包含多个由“+”号分隔的项(例如 ~ x1 + x2 | g1 * g2 )。 xyplot 的文档说明了这种情况下发生的情况。请注意,无论哪种形式,公式中的所有项在求值后都必须具有相同的长度。

对于numericfactor 方法,x 是绘制直方图或核密度估计的变量。在这些情况下不允许进行调节。

data

对于formula 方法,一个可选的数据源(通常是一个 DataFrame ),其中的变量将被评估(有关详细信息,请参阅xyplot)。不应为其他方法指定 data,如果指定,则会被忽略并显示警告。

type

指示要绘制的直方图类型的字符串。 "percent""count" 分别给出相对频率和频率直方图,当断点不等距时可能会产生误导。 "density" 生成密度直方图。

当断点间隔不等时,以及当breaksNULL 或函数时,type 默认为"density",否则为"percent"

nint

指定直方图箱数的整数,仅当未指定 breaks 或在调用中指定 NULL 时适用。当绘制的变量是一个因子时被忽略。

endpoints

长度为 2 的数字向量,指示直方图要覆盖的 x-values 的范围。仅当未指定 breaks 并且绘制的变量不是因子时才适用。在do.breaks 中,指定要划分的间隔。

breaks

通常是一个长度为(bin 数量 + 1)的数值向量,定义 bin 的断点。请注意,当断点间隔不均匀时,type 唯一有意义的值是密度。

breaks未指定时,首先检查lattice.getOption("histogram.breaks")的值。如果该值为 NULL ,则默认使用

      breaks = seq_len(1 + nlevels(x)) - 0.5
    

x 是一个因子时,并且

      breaks = do.breaks(endpoints, nint)
    

否则。以这种方式计算的断点用于所有面板中。如果检索到的值不是 NULL ,或者显式指定 breaks ,它将独立影响每个面板中的显示。有效值是 hist 中作为 breaks 参数接受的值。特别是,这允许将 breaks 指定为给出 bin 数量的整数(类似于 nint )、表示方法的字符串或函数。

当明确指定时, breaks 的特殊值是 NULL ,在这种情况下,bin 的数量由 nint 确定,然后根据 equal.widths 的值选择断点。

equal.widths

逻辑标志,仅在 breaks=NULL 时相关。如果 TRUE ,将选择等间距的 bin,否则,将选择近似相等面积的 bin(通常会产生不等间距的断点)。

n

整数,给出要评估核密度的点数。作为参数传递给 density

panel

为每个面板调用一次的函数,它使用与面板对应的数据包(面板变量的子集)来创建显示。默认面板函数 panel.histogrampanel.densityplot 单独记录,并且具有可用于以各种方式自定义其输出的参数。此类参数通常可以直接提供给高级函数。

allow.multiple , outer

请参阅xyplot

auto.key

请参阅xyplot

aspect

请参阅xyplot

prepanel

请参阅xyplot

scales

请参阅xyplot

strip

请参阅xyplot

groups

请参阅xyplot。请注意,histogram 的默认面板函数不支持分组显示,而 densityplot 的默认面板函数支持分组显示。

xlab , ylab

请参阅xyplot

xlim , ylim

请参阅xyplot

drop.unused.levels

请参阅xyplot

lattice.options

请参阅xyplot

default.scales

请参阅xyplot

subscripts

请参阅xyplot

subset

请参阅xyplot

default.prepanel

后备预面板函数。请参阅xyplot

weights

用于密度计算的权重数值向量,以用于 groups 和公式中的项(如果有)的非标准方式进行评估。如果指定了此项,则使用面板函数内的 subscripts 对其进行子集化,以将其与相应的 x 值进行匹配。

在撰写本文时,weights 无法与扩展公式规范结合使用(这并不难修复,因此如果您需要此函数,只需向维护人员发出 bug)。

bw , adjust , width

控制带宽的参数。作为参数传递给 density

kernel , window

内核的选择。作为参数传递给 density

give.Rkern

逻辑标志,作为参数传递给 density 。提供此参数只是为了便于实现,如果 TRUE 则会产生错误。

from , to , cut

控制评估密度的范围。作为参数传递给 density

na.rm

指定是否应忽略 NA 值的逻辑标志。作为参数传递给 density ,但与 density 不同,默认值为 TRUE

...

进一步的论证。有关重要细节,请参阅 xyplot 中的相应条目。

细节

histogram 绘制条件直方图,densityplot 绘制条件核密度图。默认面板函数使用density函数来计算密度估计,并且density接受的所有参数都可以在对densityplot的调用中指定以控制输出。有关详细信息,请参阅density 的文档。

这些和所有其他高级网格函数有几个共同的参数。这些仅在 xyplot 的帮助页面中进行了大量记录,应查阅该页面以了解更详细的用法。

do.breaks 是一个实用程序函数,它计算给定间隔和要分解的块数的断点。

"trellis" 的对象。 update 方法可用于更新对象的组件,print 方法(通常默认调用)会将其绘制在适当的绘图设备上。

注意

默认面板函数panel.histogram 接受的参数形式与S-PLUS 不同。 S-PLUS 计算 histogram 内部的高度并仅将断点和高度传递给面板函数,而 lattice 只是将原始变量 x 与断点一起传递。这种方式比较灵活;请参阅下面的示例,其中估计密度叠加在直方图上。

例子

require(stats)
histogram( ~ height | voice.part, data = singer, nint = 17,
          endpoints = c(59.5, 76.5), layout = c(2,4), aspect = 1,
          xlab = "Height (inches)")

histogram( ~ height | voice.part, data = singer,
          xlab = "Height (inches)", type = "density",
          panel = function(x, ...) {
              panel.histogram(x, ...)
              panel.mathdensity(dmath = dnorm, col = "black",
                                args = list(mean=mean(x),sd=sd(x)))
          } )

densityplot( ~ height | voice.part, data = singer, layout = c(2, 4),  
            xlab = "Height (inches)", bw = 5)

作者

Deepayan Sarkar Deepayan.Sarkar@R-project.org

参考

Sarkar, Deepayan (2008) Lattice: Multivariate Data Visualization with R, Springer. http://lmdvr.r-forge.r-project.org/

也可以看看

xyplot , panel.histogram , density , panel.densityplot , panel.mathdensity , Lattice

相关用法


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