### 直方图 直方图不同于柱形图,虽然它们都是用方柱来表示。直方图是对变量进行分组后计算组内频数也就是落于组内的观察值的个数,用这个频数对应于方柱的高度而绘制的图形。直方图的英文是histogram而方柱图是bar或者col,连续型变量的bin之间是连接的,中间没有空白,bar和col中间可以留空白。连续性变量直方图使用stat_bin统计变换,离散型变量使用stat_count统计变换。bar使用stat_count变换,col使用stat_identity变换。 频率多边形geom_frqpoly用折线代表频数,而geom_histogram用方柱代表频数。 #### 语法及参数 geom_freqpoly(mapping = NULL, data = NULL, stat = "bin", position = "identity", ..., na.rm = FALSE, show.legend = NA, inherit.aes = TRUE) geom_histogram(mapping = NULL, data = NULL, stat = "bin", position = "stack", ..., binwidth = NULL, bins = NULL, na.rm = FALSE, show.legend = NA, inherit.aes = TRUE) stat_bin(mapping = NULL, data = NULL, geom = "bar", position = "stack", ..., binwidth = NULL, bins = NULL, center = NULL, boundary = NULL, breaks = NULL, closed = c("right", "left"), pad = FALSE, na.rm = FALSE, show.legend = NA, inherit.aes = TRUE) * mapping:视觉属性映射。 * data: 数据 * position: 位置调整, 字符串或者位置调整函数的返回值。 * ...: 传入图层的其他参数。通常是视觉属性参数,如color = "red" 或 size = 3。 * na.rm:是否删除缺失值。如果该项为FALSE, 缺失值将被删除,但会给出一个警告。如果为TRUE,缺失值将会被直接删除。 * show.legend: 指定该图层是否包含在图例中。默认值为NA,如果任何视觉属性被映射,就被显示到图例中,如果是FALSE,不包括该图层,如果是TRUE则永远包括该图层。 * inherit.aes:如果是FALSE,将覆盖没入的视觉映射,而不是与它们合并。 * binwidth: bin的宽度。日期变量(date)的binwidth为天数,时间变量(time)为秒数。 * bins: bin数,如果设定binwidth,bins有binwidth计算得到并覆盖这里的设置,默认数值为30。 * geom, stat: 默认情况下,geom_histogram/geom_freqpoly默认使用stat_bin统计,stat_bin默认使用geom_histogram/geom_freqpoly显示。指定此参数可覆盖这种默认的关联。 * center: bin的中心. * boundary: 两个bin之间的边界。 * breaks: * closed: 取值为"right"或"left",表示右边或左边的边界是否包含在bin中,即bin是开区间还是闭区间。 * pad: 如果为TRUE, 指定是否在x的后面添加空的bins,以确保频数多边形可以到0。默认为FALSE。 #### 举例 最简单的情况: ```{r} ggplot(diamonds, aes(carat)) + geom_histogram() ``` 设置binwidth: ```{r} ggplot(diamonds, aes(carat)) + geom_histogram(binwidth = 0.01) ``` 设置bins ```{r} ggplot(diamonds, aes(carat)) + geom_histogram(bins = 200) ``` 使用变量分组,并堆叠显示 ```{r} ggplot(diamonds, aes(price, fill = cut)) + geom_histogram(binwidth = 500) ``` 用折线显示 ```{r} ggplot(diamonds, aes(price, colour = cut)) + geom_freqpoly(binwidth = 500) ```