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


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