14.6 箱线图

如果你想研究大量相关变量的分布,可绘制大量的直方图。例如,如果想按区域查看奥巴马得票数的分布,可以使用网格及切面法绘制10张直方图。这是可行的,但它不能很好地扩展。如果你需要一百张直方图,即使用上最大的显示器也放不下。箱线图(box plot,有时也被称为盒须图或盒形图)能节省大量空间,让你能轻松地一次比较众多的分布。尽管你不能得到像直方图或核密度图那样多的细节,但简单的高低和宽窄之间的比较是没问题的。

base系统中绘制箱线图的函数为boxplot。它在很大程度上受到lattice的启发——它使用一个公式接口且需要data参数。图14-38显示了其用法:

  1. boxplot(Obama ~ Region, data = obama_vs_mccain)

图像说明文字 图14-38:使用base系统绘制的箱线图

在某种意义上,如果我们重新把箱形图从小到大排列,这种类型的绘图往往会更清楚。reorder函数能根据数值得分的情况改变因子水平的顺序。在图14-39中,我们按奥巴马得票的中位数给每个区域的Region级别打分:

  1. ovm <- within(
  2. obama_vs_mccain,
  3. Region <- reorder(Region, Obama, median)
  4. )
  5. boxplot(Obama ~ Region, data = ovm)

图像说明文字 图14-39:使用base系统为箱线图排序

base切换到lattice非常简单。在本例中,我们可以直接将boxplot替换为bwplot(bw是b(box)和w(whisker)的简称)。请注意图14-40和图14-38的相似处:

  1. bwplot(Obama ~ Region, data = ovm)

图14-40:使用lattice绘制的箱线图

ggplot2中绘制箱线图只需我们添加一个geom_boxplot,如图14-41所示:

  1. ggplot(ovm, aes(Region, Obama)) +
  2. geom_boxplot()

图14-41:使用ggplot2系统绘制的箱线图