使用pairs绘制矩阵多元图

如果 X 是一个数值矩阵或者数据框,命令

     > pairs(X)

将产生 X 的列之间两两相对的成对散点图阵列(pairwise scatterplot matrix)。 也就是说,X的每一列相对 X 的所有其他列而产生 n(n-1) 个 图,并且把这些图以阵列个形式显示在图区。这个 图形阵列的行列图形尺度一致。

例如 : 

> X <- matrix(1:8, 2, 4)

> X

     [,1] [,2] [,3] [,4]

[1,]    1    3    5    7

[2,]    2    4    6    8

> pairs(X)

主要是不是每幅图都有坐标, 所以看起来很难理解, 其实每个格子都有坐标, 没画出来的话就在对立面.

我们看上图的第一列, 横坐标固定, 横坐标对应矩阵第一列的数据. 

纵坐标, 每个格子有不同的纵坐标, 这些纵坐标和矩阵的其他几列对应.

上图第1列 : 

第1个格子是第1列和第1列的数据, 横坐标是第1列的数据, 纵坐标是第1列的数据. (无图显示)

第2个格子是第1列和第2列的数据, 横坐标代表第1列, 是第1列的数据, 纵坐标是第2列的数据.

第3个格子是第1列和第3列的数据, 横坐标代表第1列, 是第1列的数据, 纵坐标是第3列的数据.

第4个格子是第1列和第4列的数据, 横坐标代表第1列, 是第1列的数据, 纵坐标是第4列的数据.

上图第2列 : 

从上开始

第1个格子是第2列和第1列的数据, 横坐标是第2列的数据, 纵坐标是第1列的数据.

第2个格子是第2列和第2列的数据, 横坐标是第2列的数据, 纵坐标是第2列的数据. (无图显示)

第3个格子是第2列和第3列的数据, 横坐标是第2列的数据, 纵坐标是第3列的数据.

第4个格子是第2列和第4列的数据, 横坐标是第2列的数据, 纵坐标是第4列的数据.

........

pairs还支持使用公式, 输入多个变量时, 每个变量代表一列, 绘制与其他变量的多元图.

例如 : 

> x <- 1:10

> y <- 101:110

> z <- 201:210

> x

 [1]  1  2  3  4  5  6  7  8  9 10

> y

 [1] 101 102 103 104 105 106 107 108 109 110

> z

 [1] 201 202 203 204 205 206 207 208 209 210

> pairs(~ x / y / z)

> pairs(~ x + y + z)

以上得到的图是一致的 : 


x,y,z每个代表1列, 与其他列绘制多元图.

例如第1列的横坐标为x, 纵坐标分别为y,z绘制2副图.

第2列的横坐标为y, 纵坐标分别为x,z绘制2副图.

第3列的横坐标为z, 纵坐标分别为x,y绘制2副图.

[参考]

1.  > help(pairs)

pairs                 package:graphics                 R Documentation

Scatterplot Matrices

Description:

     A matrix of scatterplots is produced.

Usage:

     pairs(x, ...)

     ## S3 method for class 'formula'
     pairs(formula, data = NULL, ..., subset,
           na.action = stats::na.pass)

     ## Default S3 method:
     pairs(x, labels, panel = points, ...,
           lower.panel = panel, upper.panel = panel,
           diag.panel = NULL, text.panel = textPanel,
           label.pos = 0.5 + has.diag/3, line.main = 3,
           cex.labels = NULL, font.labels = 1,
           row1attop = TRUE, gap = 1, log = "")

Arguments:

       x: the coordinates of points given as numeric columns of a
          matrix or data frame.  Logical and factor columns are
          converted to numeric in the same way that ‘data.matrix’ does.

 formula: a formula, such as ‘~ x + y + z’.  Each term will give a
          separate variable in the pairs plot, so terms should be
          numeric vectors.  (A response will be interpreted as another
          variable, but not treated specially, so it is confusing to
          use one.)

    data: a data.frame (or list) from which the variables in ‘formula’
          should be taken.

  subset: an optional vector specifying a subset of observations to be
          used for plotting.

na.action: a function which indicates what should happen when the data
          contain ‘NA’s.  The default is to pass missing values on to
          the panel functions, but ‘na.action = na.omit’ will cause
          cases with missing values in any of the variables to be
          omitted entirely.

  labels: the names of the variables.

   panel: ‘function(x, y, ...)’ which is used to plot the contents of
          each panel of the display.

     ...: arguments to be passed to or from methods.

          Also, graphical parameters can be given as can arguments to
          ‘plot’ such as ‘main’.  ‘par("oma")’ will be set
          appropriately unless specified.

lower.panel, upper.panel: separate panel functions (or ‘NULL’) to be
          used below and above the diagonal respectively.

diag.panel: optional ‘function(x, ...)’ to be applied on the diagonals.

text.panel: optional ‘function(x, y, labels, cex, font, ...)’ to be
          applied on the diagonals.

label.pos: ‘y’ position of labels in the text panel.

line.main: if ‘main’ is specified, ‘line.main’ gives the ‘line’
          argument to ‘mtext()’ which draws the title.  You may want to
          specify ‘oma’ when changing ‘line.main’.

cex.labels, font.labels: graphics parameters for the text panel.

row1attop: logical. Should the layout be matrix-like with row 1 at the
          top, or graph-like with row 1 at the bottom?

     gap: distance between subplots, in margin lines.

     log: a character string indicating if logarithmic axes are to be
          used: see ‘plot.default’. ‘log = "xy"’ specifies logarithmic
          axes for all variables.

Details:

     The ijth scatterplot contains ‘x[,i]’ plotted against ‘x[,j]’.
     The scatterplot can be customised by setting panel functions to
     appear as something completely different. The off-diagonal panel
     functions are passed the appropriate columns of ‘x’ as ‘x’ and
     ‘y’: the diagonal panel function (if any) is passed a single
     column, and the ‘text.panel’ function is passed a single ‘(x, y)’
     location and the column name.  Setting some of these panel
     functions to ‘NULL’ is equivalent to _not_ drawing anything there.

     The graphical parameters ‘pch’ and ‘col’ can be used to specify a
     vector of plotting symbols and colors to be used in the plots.

     The graphical parameter ‘oma’ will be set by ‘pairs.default’
     unless supplied as an argument.

     A panel function should not attempt to start a new plot, but just
     plot within a given coordinate system: thus ‘plot’ and ‘boxplot’
     are not panel functions.

     By default, missing values are passed to the panel functions and
     will often be ignored within a panel.  However, for the formula
     method and ‘na.action = na.omit’, all cases which contain a
     missing values for any of the variables are omitted completely
     (including when the scales are selected).

Author(s):

     Enhancements for R 1.0.0 contributed by Dr. Jens
     Oehlschlaegel-Akiyoshi and R-core members.

References:

     Becker, R. A., Chambers, J. M. and Wilks, A. R. (1988) _The New S
     Language_.  Wadsworth & Brooks/Cole.

Examples:

     pairs(iris[1:4], main = "Anderson's Iris Data -- 3 species",
           pch = 21, bg = c("red", "green3", "blue")[unclass(iris$Species)])

     ## formula method
     pairs(~ Fertility + Education + Catholic, data = swiss,
           subset = Education < 20, main = "Swiss data, Education < 20")

     pairs(USJudgeRatings)
     ## show only lower triangle (and suppress labeling for whatever reason):
     pairs(USJudgeRatings, text.panel = NULL, upper.panel = NULL)

     ## put histograms on the diagonal
     panel.hist <- function(x, ...)
     {
         usr <- par("usr"); on.exit(par(usr))
         par(usr = c(usr[1:2], 0, 1.5) )
         h <- hist(x, plot = FALSE)
         breaks <- h$breaks; nB <- length(breaks)
         y <- h$counts; y <- y/max(y)
         rect(breaks[-nB], 0, breaks[-1], y, col = "cyan", ...)
     }
     pairs(USJudgeRatings[1:5], panel = panel.smooth,
           cex = 1.5, pch = 24, bg = "light blue",
           diag.panel = panel.hist, cex.labels = 2, font.labels = 2)

     ## put (absolute) correlations on the upper panels,
     ## with size proportional to the correlations.
     panel.cor <- function(x, y, digits = 2, prefix = "", cex.cor, ...)
     {
         usr <- par("usr"); on.exit(par(usr))
         par(usr = c(0, 1, 0, 1))
         r <- abs(cor(x, y))
         txt <- format(c(r, 0.123456789), digits = digits)[1]
         txt <- paste0(prefix, txt)
         if(missing(cex.cor)) cex.cor <- 0.8/strwidth(txt)
         text(0.5, 0.5, txt, cex = cex.cor * r)
     }
     pairs(USJudgeRatings, lower.panel = panel.smooth, upper.panel = panel.cor)

     pairs(iris[-5], log = "xy") # plot all variables on log scale
     pairs(iris, log = 1:4, # log the first four
           main = "Lengths and Widths in [log]", line.main=1.5, oma=c(2,2,3,2))
时间: 2024-12-03 13:25:10

使用pairs绘制矩阵多元图的相关文章

使用coplot()绘制多元图

本文讲解coplot的使用, 这个函数可以用于绘制多元图, 例如按省份调查身高和体重. 省份是factor, z 身高是x 体重是y 对应用法 coplot(y ~ x | z) 数据例如 :  z <- factor(rep('浙江', 6), rep('江西', 6), rep('北京', 6), rep('广州', 5) ) 表示浙江,江西,北京有6组数据, 广州有5组数据. 一共23组数据 对应数据为 y <- c(55, 65, 73, 63, 58, 66, ...........

数据-求帮忙详解如何绘制溶解度曲面图,多谢

问题描述 求帮忙详解如何绘制溶解度曲面图,多谢 ,已知溶剂组成X,温度,及相对应的溶解度Y共有多组数据,如何利用所给数据绘曲面图 解决方案 折线图好绘制,但曲面图就比较麻烦.一般的 GDI 库不支持这样的功能,用 Matlib 可以实现曲面图. 如果用 VC,可以考虑使用 teechart. OpenGL 等等,但实现会比较复杂:MFC TeeChart用法整理 三(三维图)opengl地形生成 解决方案二: Matlab提供了mesh函数和surf函数来绘制三维曲面图.mesh函数用来绘制三维

用Java绘制K线图

Java语言中的Applet(Java小程序)和Application(Java应用程序)是在结构和功能上都存在很大差异的两种不同的编程方式.Applet应用于Web页上,可做出多姿多彩的页面特效,给网站增辉添色:Application则与其他编程语言(如VB.VC)一样,可编制各种应用程序. 本文要讨论的是第一种情况,在Web页上用Java Applet绘制K线图. K线是股市行情分析中的一种参数指标,用股票每日的开盘价.最高价.最低价.收盘价及成交量等数据进行作图,配合五日.十日均线便可反映

编写Bash Shell通过gnuplot绘制系统性能数据图的方法

  这篇文章主要介绍了编写Bash Shell通过gnuplot绘制系统性能数据图的方法,做到可视化数据收集,需要的朋友可以参考下 使用步骤: 1.设置一个定时任何 执行getperf.sh,采集性能数据 2.将采集到性能数据文件,如:192.168.1.1.tar.gz 解压 3.将性能分析的脚步performance_analyse.sh 放到解压后的目录中 4.安装gnuplot程序(这里下载) 5.将字体文件夹,拷贝到/usr/share/fonts/目录 6.直接运行 bash per

Excel绘制简单折线图的方法

  Excel绘制简单折线图的方法 这是使用同一组数据源制作的图表,两者的视觉效果应该不用我多说了吧.接下来,咱们就看看如何实现的吧. 步骤1 首先选中表格中的任意单元格--插入选项卡--折线图--带数据标记的折线图. 步骤2 选中日期坐标轴,右键--设置坐标轴格式 在弹出的设置坐标轴格式对话框中,设置坐标轴主要刻度线类型为无. 点击数字--自定义,在格式代码中输入"m/d",点击添加--关闭 步骤3

WPS演示教程:妙用自定义动画轻松绘制城市轮廓图

运用之妙 存乎一心 --妙用自定义动画轻松绘制城市轮廓图 笔者的一位朋友在长沙任教,近日受教研部门委托上一节乡土地理示范课,需要绘制出湖南各地市的轮廓图,利用WPS强大的作图功能固然可以实现(具体方法请参考拙文<WPS文字 几何绘图好帮手>:http://bbs.wps.cn/thread-21829428-1-1.html),但精雕细琢势必劳神费力.笔者研究发现,巧妙利用WPS演示中的自定义动画就可以轻松达成上述目标. 地市轮廓图的绘制真的可以通过自定义动画来实现吗?不要奇怪,听我细细道来.

Edraw Max怎么绘制东南西北方向图?

Edraw Max怎么绘制东南西北方向图?   1.打开Edraw Max设计软件,依此操作"New--->Basic Diagram",如下图所示: 2.找到"Circle-Spoke Diagram",然后单击"Create"新建画布,如下图所示: 3.在左侧拖一个"Circle"到画布中,分为四部分的圆环图,如下图所示:

C#/wpf的写的界面,使用dynamicdatadisplay绘制的折线图,怎样修改/去掉图例?

问题描述 代码如下:<d3:ChartPlotterName="HeightLineGraph"Grid.Row="3"Grid.Column="0"HorizontalContentAlignment="Center"VerticalContentAlignment="Center"HorizontalAlignment="Center"VerticalAlignment=&qu

ROS机器人程序设计(原书第2版)3.7 绘制标量数据图

3.7 绘制标量数据图 我们可以使用ROS中现有的一些通用工具轻松地绘制标量数据图.当然非标量数据也可以绘制,但是要分别在不同的标量域里进行.我们之所以在此仅讨论标量数据,是因为对于大多数非标量数据,有专门的工具能够更好地对其进行表示,我们会在后面进行部分介绍,例如图形.位姿.方向和角度等. 用rqt_plot画出时间趋势曲线 在ROS系统中,标量数据可以根据消息中提供的时间戳作为时间序列绘制.然后,我们就能够在y轴上使用rqt_plot工具绘制标量数据.rqt_plot工具有一套功能强大的参数