2.5 多变量绘图
表2.3和图2.6 展示了可以用于绘制多变量图形的传统绘图函数。
图2.6 用于绘制多个变量的高级绘图函数。在所有示例图中,当某一个函数可以绘制超过一种数据类型时,示例中所绘制图形对应的数据类型将被标记出来(用灰体)。
给定一个数据框,其所有列都是数值类型,plot()函数在接受该数据框作为参数后会绘制一个散点图矩阵,数据框内每一对相互对应的变量都被绘制成矩阵的一幅散点图。
pairs()函数也可以实现相同的目的,但是有一点区别是pairs()也可以接受矩阵形式的参数。
当数据是矩阵形式的时候,还可以选择matplot()函数,该函数可以用一系列不同的数据符号或者线段表示数据矩阵的每一列,并绘制出一幅对应的散点图。传给matplot()函数的数据可以是不同的x和y 矩阵,也可以是一个单一的矩阵,在后一种情况下,矩阵的数值被视作matplot()函数的y参数,而矩阵的行序数1:nrow则作为matplot()函数的x参数。
还有一个选择是starts()函数,该函数为数据矩阵的每一行绘制一个星形,而一行中每一列都对应星形的一个支撑臂,每列的数值用支撑臂的长度来表示。这种类型的绘图是实现微多元图技术的一个例子,即在一个很小的页面内同时绘制许多微小的图形(详见3.3节关于如何将任意类型的多个图形绘制于单独的一页;12.4节关于其他基于极坐标系统的绘图示例;以及17.2.2小节关于更复杂的实现多元数据可视化的绘图系统)。
许多函数适用于数据包含三个数值变量的特殊情况。当x变量和y变量的值被限定在一个规则网格上,并且只有一个响应变量z的时候,image()函数将把z绘制成一个彩色区域的网格图案,contour()函数绘制等高线图(z取常量的曲线),filled.contour()则在等高线之间添加颜色区域,此外还有persp()函数可以绘制一个三维表面图来表示z(见第16章关于更多复杂的三维绘图函数)。
除了以上函数外,还有symbols()函数,该函数可以绘制一个用小型符号来表示z的关于x和y的散点图,例如,一个半径与z成比例的圆圈。R 系统提供了大量的符号,其中有一些符号允许在同一个符号内表示多个变量,例如,一个长方形符号能够通过其宽度和高度来表示两个不同变量。
当数据是由两个数值变量以及一个或者两个分组因子组成的时候,coplot()函数可以用来绘制一幅条件分割图,在该图中分组因子的每一个水平被分开绘制出来。作为参数的数据必须是形如y~x|g 或者 y~x|g*h的条件关系表达式,这里g 与h都是因子。coplot()函数所包含的思想在lattice包(见第4章)和ggplot2包(见第5章)中被应用到了更深入的层次。
对于由多个因子组成的数据,可以用mosaicplot()函数在给定多维计数表的情况下绘制多维马赛克图(见第13章关于绘制多因子图的其他选项)。