2.4 绘制直方图

问题

如何绘制直方图来查看一维数据的分布特征?

方法

可以使用hist()函数绘制直方图(见图2-8),使用时需向其传递一个向量:

hist(mtcars$mpg)

# 通过breaks参数指定大致组距
hist(mtcars$mpg, breaks = 10)

图片 384

图2-8:使用基础绘图系统绘制的直方图(左图);有更多分组的直方图(右图)。注意:右图中由于组距变小,每组对应的样本数也有所减少

对于ggplot2包,可以使用geom_histogram()函数得到类似的绘图结果(见图2-9):

library(ggplot2)
ggplot(mtcars, aes(x = mpg)) + 
  geom_histogram()
#> `stat_bin()` using `bins = 30`. Pick better value with `binwidth`.

# 更大的组距
ggplot(mtcars, aes(x = mpg)) +
  geom_histogram(binwidth = 4)

图片 383

图2-9:使用ggplot2绘制的直方图:组距为默认值(左图);组距更大的直方图(右图)

当你不设定组距而直接创建一个直方图时,ggplot()函数会打印一行信息提示你默认组距为30,请选择一个更适合的组距。这是因为使用不同的组距探索数据是非常重要的;在默认设定30的情况下直方图可能展示数据的一些有用信息,但也可能无法给你有效的帮助。

另见

关于绘制直方图的更多内容,参见6.1节和6.2节。