14.6 箱线图
如果你想研究大量相关变量的分布,可绘制大量的直方图。例如,如果想按区域查看奥巴马得票数的分布,可以使用网格及切面法绘制10张直方图。这是可行的,但它不能很好地扩展。如果你需要一百张直方图,即使用上最大的显示器也放不下。箱线图(box plot,有时也被称为盒须图或盒形图)能节省大量空间,让你能轻松地一次比较众多的分布。尽管你不能得到像直方图或核密度图那样多的细节,但简单的高低和宽窄之间的比较是没问题的。
base
系统中绘制箱线图的函数为boxplot
。它在很大程度上受到lattice
的启发——它使用一个公式接口且需要data
参数。图14-38显示了其用法:
boxplot(Obama ~ Region, data = obama_vs_mccain)
图14-38:使用base系统绘制的箱线图
在某种意义上,如果我们重新把箱形图从小到大排列,这种类型的绘图往往会更清楚。reorder
函数能根据数值得分的情况改变因子水平的顺序。在图14-39中,我们按奥巴马得票的中位数给每个区域的Region
级别打分:
ovm <- within(
obama_vs_mccain,
Region <- reorder(Region, Obama, median)
)
boxplot(Obama ~ Region, data = ovm)
图14-39:使用base系统为箱线图排序
从base
切换到lattice
非常简单。在本例中,我们可以直接将boxplot
替换为bwplot
(bw是b(box)和w(whisker)的简称)。请注意图14-40和图14-38的相似处:
bwplot(Obama ~ Region, data = ovm)
图14-40:使用lattice绘制的箱线图
在ggplot2
中绘制箱线图只需我们添加一个geom_boxplot
,如图14-41所示:
ggplot(ovm, aes(Region, Obama)) +
geom_boxplot()
图14-41:使用ggplot2系统绘制的箱线图