可以用n次二元观测数据生成散点图矩阵。在MATLAB中可以用gplotmatrix函数绘制散点图矩阵。
下面分变量是否有分组对应的两种情况绘制两个散点图矩阵。
首先生成一个10*4的随机数矩阵A,利用它绘制散点图矩阵。
code.matlab
>> A=rand(10,4);
>> gplotmatrix(A)
生成图1-1。可见,变量没有分组时,散点图矩阵对角线上为某变量数据绘制的直方图,其他元素为不同变量两两之间的散点图。
\[\]
图1-1 变量没有分组时生成的散点图矩阵
如果变量下面又有分组,则绘制的散点图矩阵更加复杂。下面利用系统自带的carbig数据绘制散点图矩阵。
code.matlab
>> load carbig %加载数据
>> X = [MPG,Acceleration,Displacement,Weight,Horsepower]; %绘图数据
>> varNames = {'MPG'; 'Acceleration'; 'Displacement'; 'Weight'; 'Horsepower'}; %变量名称
>> figure %新建绘图窗口
>> gplotmatrix(X,[],Cylinders,['c' 'b' x27;m' 'g' 'r'],[],[],false); %用Cylinders对各变量进行分组
>> text([. .66 .83], repmat(-.1,1,5), varNames, 'FontSize',8); %X轴标题
>> text(repmat(-.12,1,5), [.86 .62 .41 .25 .02], varNames, 'FontSize',8, 'Rotation',90); %
其中,X为参与绘图的变量数据,varNames为变量名称。用gplotmatrix函数绘制散点图矩阵,Cylinders为分组变量,后面指定绘图颜色、点标记和大小,false表示不绘制图例。两个text函数用于绘制坐标轴边上的标题,生成结果如图1-2所示。
可见,变量有分组时,散点图矩阵对角线上为变量各分组数据绘制的直方图,其他元素为不同变量各分组数据绘制的散点图。不同分组数据对应的图形用不同颜色进行区分。
\[\]
图1-2 散点图矩阵