6.6 点图

点图提供了一种在简单水平刻度上绘制大量有标签值的方法。你可以使用dotchart()函数创建点图,格式为:

  1. dotchart(x,labels=)

其中的x是一个数值向量,而labels则是由每个点的标签组成的向量。你可以通过添加参数groups来选定一个因子,用以指定x中元素的分组方式。如果这样做,则参数gcolor可以控制不同组标签的颜色,cex可控制标签的大小。这里是mtcars数据集的一个示例:

  1. dotchart(mtcars$mpg, labels=row.names(mtcars), cex=.7,
  2. main="Gas Mileage for Car Models",
  3. xlab="Miles Per Gallon")

绘图结果已在图6-16中给出。

6.6 点图 - 图1

图6-16 每种车型每加仑汽油行驶英里数的点图

图6-16可以让你在同一个水平轴上观察每种车型的每加仑汽油行驶英里数。通常来说,点图在经过排序并且分组变量被不同的符号和颜色区分开的时候最有用。代码清单6-11给出了一个示例。

代码清单6-11 分组、排序、着色后的点图

  1. x <- mtcars[order(mtcars$mpg),]
  2. x$cyl <- factor(x$cyl)
  3. x$color[x$cyl==4] <- "red"
  4. x$color[x$cyl==6] <- "blue"
  5. x$color[x$cyl==8] <- "darkgreen"
  6. dotchart(x$mpg,
  7. labels = row.names(x),
  8. cex=.7,
  9. groups = x$cyl,
  10. gcolor = "black",
  11. color = x$color,
  12. pch=19,
  13. main = "Gas Mileage for Car Models\ngrouped by cylinder",
  14. xlab = "Miles Per Gallon")

在本例中,根据每加仑汽油行驶英里数(从最低到最高)对数据框mtcars进行排序,结果保存为数据框x。数值向量cyl被转换为一个因子。一个字符型向量(color)被添加到了数据框x中,根据cyl的值,它所含的值为"red""blue""darkgreen"。另外,各数据点的标签取自数据框的行名(车辆型号)。数据点根据汽缸数量分组。数字4、6和8以黑色显示。点和标签的颜色来自向量color,点以填充的圆圈表示。代码清单6-11绘图的结果如图6-17所示。

6.6 点图 - 图2

图6-17 各车型依汽缸数量分组的每加仑汽油行驶英里数点图

在图6-17中,许多特征第一次明显起来。你再次看到,随着汽缸数的减少,每加仑汽油行驶的英里数有了增加。但你同时也看到了例外。例如,Pontiac Firebird有8个汽缸,但较六缸的Mercury 280C和Valiant的行驶英里数更多。六缸的Hornet 4 Drive与四缸的Volvo 142E的每加仑汽油行驶英里数相同。同样明显的是,Toyota Corolla的油耗最低,而Lincoln Continental和Cadillac Fleetwood是英里数较低一端的离群点。

在本例中,你可以从点图中获得显著的洞察力,因为每个点都有标签,每个点的值都有其内在含义,并且这些点是以一种能够促进比较的方式排布的。但是随着数据点的增多,点图的实用性随之下降。

注意 点图有许多变种。Jacoby(2006)对点图进行了非常有意义的讨论,并且提供了创新型应用的R代码。此外,Hmisc包也提供了一个带有许多附加功能的点图函数(恰如其分地叫做dotchart2)。