R语言相关关系可视化函数梳理

2023-11-13

点击蓝字关注这个神奇的公众号~

作者:赵镇宁 R语言中文社区特约作者


当考察多个变量间的相关关系时,通常将多个变量的两两关系以矩阵的形式排列起来,R提供了散点图矩阵、相关矩阵等多种可视化方案,囊括了众多函数。本文对R语言相关关系可视化的函数进行了初步梳理(全篇框架如下),后续大家可根据个人需求及函数功能择优选择。





一、pairs {graphics}

1、参考

(1)《现代统计图形》 5.17 散点图矩阵

(2)《R数据可视化手册》 5.13绘制散点图矩阵

(3)pairs {graphics} 帮助文档

2、主要参数解释



3、图形示例

(1)基本图形

pairs(iris[1:4], main = "Anderson's Iris Data -- 3 species",

pch = 21, bg = c("red", "green3", "blue")[unclass(iris$Species)])

# 等同于 pairs(~Sepal.Length+Sepal.Width+Petal.Length+Petal.Width, data=iris,main = "Anderson's Iris Data -- 3 species",pch = 21, bg = c("red", "green3", "blue")[unclass(iris$Species)])



上例选取iris鸢尾花数据集的前4列Sepal.Length 、Sepal.Width 、Petal.Length、Petal.Width作图,同时设置bg使得不同颜色代表不同品种的鸢尾花。可见,默认生成的散点图矩阵对角线为变量名称,上三角和下三角面板的各个窗格均为其所在行与列两个变量之间的散点图,信息传递量相对较少且重复,为此我们可以通过自定义函数进一步修改和优化。

(2)自定义图形

# 1. 自定义函数pannel.cor:显示两两变量间的相关系数,相关系数越大字号越大。

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)

}

# 2. 自定义函数pannel.hist:展示各个变量的直方图

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", ...)

}

# 3. 自定义函数panel.ls:绘制散点图,并为其添加线性拟合直线

panel.lm<-function(x,y,col=par("col"),bg=NA,pch=par("pch"),

cex=1,col.smooth="black",...){

points(x,y,pch=pch,col=col,bg=bg,cex=cex)

abline(stats::lm(y~x),col=col.smooth,...)

}

# 4. 用相关系数(pannel.cor)替代默认图形上三角的散点图,用直方图(pannel.hist)替代默认图形对角线的变量名称,用添加线性拟合线的散点图(panel.ls)代替默认图形下三角的散点图。

pairs(iris[1:4], main = "Anderson's Iris Data -- 3 species",

pch = 21, bg = c("red", "green3", "blue")[unclass(iris$Species)],

diag.panel=panel.hist,

upper.panel=panel.cor,

lower.panel=panel.lm)


自定义后的散点图矩阵主对角线上用了直方图,从中我们可以看到四个变量各自的分布情况;上三角面板显示了各个变量之间的相关系数,相关系数越大字号越大;下三角为散点图,并用不同颜色的点标记出鸢尾花的不同类型,同时利用函数panel.ls()添加了一条线性拟合线。此外,我们也可以将子面板函数设置为NULL,使得图形仅显示一半。


二、gpairs {gpairs}

1、参考

(1)gpairs {gpairs} 帮助文档

(2)统计之都:不同版本的散点图矩阵

https://cosx.org/2009/03/scatterplot-matrix-visualization

2、主要参数解释



3、图形示例

library(gpairs)

gpairs(iris, upper.pars = list(scatter = 'stats'),

scatter.pars = list(pch = substr(as.character(iris$Species), 1, 1),

col = as.numeric(iris$Species)),

stat.pars = list(verbose = TRUE))



上图中,4*4矩阵反映了iris前4列Sepal.Length 、Sepal.Width 、Petal.Length、Petal.Width变量两两之间的相关关系,其中,上三角显示了相关关系的数量特征,如相关系数、p值等;下三角为散点图,不同种类的鸢尾花用不同颜色、不同点型表示;最右侧一列和最下方一行则分别对三种鸢尾花的花萼和花瓣长宽进行了简单的描述性统计分析。


三、corrgram {corrgram}

1、参考

(1)《R语言实战》11.3 相关图

(2)Friendly M. Corrgrams: Exploratory Displays for Correlation Matrices[J]. American Statistician, 2002, 56(4):316-324.

(3)corrgram {corrgram} 帮助文档

2、主要参数解释



3、图形示例

library(corrgram)

vars2 <- c("Assists","Atbat","Errors","Hits","Homer","logSal",

"Putouts","RBI","Runs","Walks","Years")

corrgram(baseball[vars2], order=TRUE, main="Baseball data PC2/PC1 order",

lower.panel=panel.shade, upper.panel=panel.pie)


上图中,下三角面板用阴影的深度来表示相关性大小,其中蓝色和从左下指向右上的斜杠表示单元格中的两个变量呈正相关,红色和从左上指向右下的斜杠表示变量呈负相关;色彩越深,饱和度越高,变量相关性越大。上三角面板用饼图的填充比例来表示相关性大小,颜色的功能同上,但相关性大小由被填充的饼图块的大小来展示,正相关性将从12点钟处开始顺时针填充饼图,负相关性则逆时针方向填充饼图。

corrgram(auto, order=TRUE, main="Auto data (PC order)",

lower.panel=corrgram::panel.ellipse,

upper.panel=panel.bar, diag.panel=panel.minmax,

col.regions=colorRampPalette(c("darkgoldenrod4", "burlywood1",

"darkkhaki", "darkgreen")))


上图中,下三角面板绘制置信椭圆和平滑拟合曲线,上三角面板绘制柱形图;主对角面板指定显示变量的最小值和最大值;矩阵的行和列利用主成分分析法进行了重排序。此外,也可设置 lower.panel或upper.panel为NULL使得图形仅显示一半。


四、corrplot {corrplot}

1、参考

(1)《R数据可视化手册》13.1 绘制相关矩阵图

(2)corrplot {corrplot} 帮助文档

(3)知乎:R语言相关系数可视化之corrplot包

https://zhuanlan.zhihu.com/p/28076189

(4)CSDN博客:R画月亮阴晴圆缺-corrplo绘图相关系数矩阵

https://blog.csdn.net/woodcorpse/article/details/79417978

2、主要参数解释


3、图形示例

(1)相关矩阵可视化

A. 仅相关系数

library(corrplot)

data(mtcars)

M <- cor(mtcars)

corrplot(M, order = "AOE", type = "upper", tl.pos = "d")

corrplot(M, add = TRUE, type = "lower", method = "number", order = "AOE",

diag = FALSE, tl.pos = "n", cl.pos = "n")



上图中,上三角面板以不同颜色和大小的圆形表示相关性大小,其中,蓝色表示正相关,红色表示负相关;颜色越深、圆形越大代表相关性越高;下三角面板在原有图形的基础上叠加而成(如果想仅显示部分,可不再叠加),用相关系数的数值和颜色表示相关性方向和大小,并利用AOE(前两个特征向量的角排序)对变量进行重排序。

B. 相关系数+P值

res1 <- cor.mtest(mtcars, conf.level = 0.95)

corrplot(M, method="ellipse",p.mat = res1$p, sig.level = 0.2,order = "AOE", type = "upper", tl.pos = "d")

corrplot(M, add = TRUE, p.mat = res1$p, sig.level = 0.2,type = "lower", method = "number", order = "AOE",

diag = FALSE, tl.pos = "n", cl.pos = "n")



上图中,上三角面板绘制椭圆形,下三角显示相关系数,并设置没通过统计相关性检验的结果打X。

(2)普通矩阵可视化

corrplot还支持对普通矩阵进行可视化,如下图。

dat = matrix(c(1:10,10:1), nrow = 10)

wb <- c("white", "black")

corrplot(t(dat), method="pie", is.corr = F, cl.pos = "n", tl.pos = "n",

cl.lim = c(1,10),col = wb, bg = "gold2")



五、ggpairs {GGally}

1、参考

ggpairs {GGally}帮助文档

2、主要参数解释



3、图形示例

(1)直接指定图形类型

library(GGally)

ggpairs(flea, columns = 2:4, ggplot2::aes(colour=species))



上图基于函数默认参数设置,并建立颜色和种类的映射,使得不同种类具有不同颜色,其中,上三角面板显示相关系数,包括总体相关以及不同种类的相关;下三角绘制散点图;主对角线用面积图表示。

(2)自定义函数

library(ggplot2)

diamonds.samp <- diamonds[sample(1:dim(diamonds)[1], 1000), ]

ggpairs(

diamonds.samp[, c(1:2,5,7)],

mapping = aes(color = cut),

lower = list(continuous = wrap("density", alpha = 0.5), combo = "dot_no_facet"),

title = "Diamonds"

)



上图利用wrap将相关参数进行封装,使得下三角显示密度图,透明度为0.5。


六、coplot {graphics}

又名“条件分割图”,与上述函数思想有所不同,该函数能够实现在给定某一个(或几个)变量z之后看观察两个变量之间的关系(以散点图形式),条件分割图中散点图的顺序是从左到右、从下到上,分别与条件变量从左到右、从下到上的指示条对应。关于coplot的具体解释和用法可参见帮助文档及谢益辉《现代统计图形》5.9 条件分割图,下面是原书中的一个例子。

par(mar = rep(0, 4), mgp = c(2, 0.5, 0))

library(maps)

coplot(lat ~ long | depth, data = quakes, number = 4,

ylim = c(-45, -10.72), panel = function(x, y, ...) {

map("world2", regions = c("New Zealand","Fiji"),

add = TRUE, lwd = 0.1, fill = TRUE,col = "lightgray")

text(180, -13, "Fiji", adj = 1)

text(170, -35, "NZ")

points(x, y, col = rgb(0.2, 0.2, 0.2, 0.5))

})



quakes {datasets} 数据集反映了1964年以来斐济岛附近发生的震级MB大于4.0的地震事件数据,如果我们想知道该地区在地震深度分布上是否均匀,可以令深度变量为条件变量,绘制条件分割图,观察在不同条件下地震发生地点(经纬度)是否有变化。图示上方是用矩形条标记出来的条件变量的取值范围,下方是条件散点图,从图中可以清楚地看出,随着深度值的增加,地震发生地点逐渐由西向东、由南向北移动,震源较深的地震都发生在离斐济岛很近的东南侧。


七、其他函数

以上六个函数很大程度上可以满足我们对相关关系可视化的需求,此外,R还提供了众多相关函数,下面选取了几个函数帮助文档中的实例进行简单介绍以作了解。

1、splom {lattice}

基于lattice作图系统,也可以通过进一步的设置达到更高的可视化要求。

library(lattice)

super.sym <- trellis.par.get("superpose.symbol")

splom(~iris[1:4], groups = Species, data = iris,

panel = panel.superpose,

key = list(title = "Three Varieties of Iris",

columns = 3,

points = list(pch = super.sym$pch[1:3],

col = super.sym$col[1:3]),

text = list(c("Setosa", "Versicolor", "Virginica"))))



2、scatterplotMatrix {car}

可以直接指定主对角线上的图形元素(密度图、箱线图、直方图、QQ图等),还可以在散点图中添加拟合曲线、平滑曲线、相关读椭圆等。

library(car)

scatterplotMatrix(~ income + education + prestige | type, data=Duncan)



3、ggscatmat {GGally}

简化版的ggpairs,只有五个参数:数据源、观测范围设定、颜色、透明度及相关度计算方法。

library(GGally)

data(flea)

ggscatmat(flea, columns = 2:4, color = "species")


4、cpairs {gclus}

library(gclus)

data(USJudgeRatings)

judge.cor <- cor(USJudgeRatings)

judge.color <- dmat.color(judge.cor)

cpairs(USJudgeRatings,panel.colors=judge.color,pch=".",gap=.5)





 往期精彩内容整理合集 

2017年R语言发展报告(国内)

R语言中文社区历史文章整理(作者篇)

R语言中文社区历史文章整理(类型篇)


公众号后台回复关键字即可学习

回复 R                  R语言快速入门及数据挖掘 
回复 Kaggle案例  Kaggle十大案例精讲(连载中)
回复 文本挖掘      手把手教你做文本挖掘
回复 可视化          R语言可视化在商务场景中的应用 
回复 大数据         大数据系列免费视频教程 
回复 量化投资      张丹教你如何用R语言量化投资 
回复 用户画像      京东大数据,揭秘用户画像
回复 数据挖掘     常用数据挖掘算法原理解释与应用
回复 机器学习     人工智能系列之机器学习与实践
回复 爬虫            R语言爬虫实战案例分享

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

R语言相关关系可视化函数梳理 的相关文章

  • Linux基础篇大集合

    目录 一 基础篇 一 基本常识 1 linux的三种网络连接方式 2 虚拟机的克隆 3 虚拟机的快照 4 虚拟机的迁移和删除 二 目录结构 三 基本实操 1 远程连接Linux操作系统 2 vi vim编辑器 3 Linux关机重启 4 用
  • react+react-router 4.0+redux+antd 购物车实战项目

    前言 前些日子抽空学习了下react 因为近期忙着找工作 没时间写博客 今天我们就来看看用react全家桶 构建一个项目把 可能我学的也不是特别好 但是经过各种查资料 总算是能够构建出一个像模像样的栗子了 github地址 https gi
  • c++开发框架Qt6:构建系统CMake详解

    Qt自带集成开发环境 IDE 名为Qt Creator 它可以在Linux OS X和Windows上运行 并提供智能代码完成 语法高亮 集成帮助系统 调试器和剖析器集成 还集成了所有主要的版本控制系统 如git Bazaar 除了Qt C
  • 台式电脑显示配置100%请勿关闭计算机,Win7关机提示“配置Windows Update已完成30%请勿关闭计算机”怎么解决...

    重装了Win7旗舰版系统后 每次关机的时候桌面上都会显示一个 配置Windows Update的界面 提示请勿关闭计算机 每次停留好几分钟才能正常关机 导致什么情况引起的呢 出现配置Windows Update是因为系统开启了自动更新功能
  • 基于Vue的Excel文件预览(使用LuckyExcel、LuckySheet实现)

    目录 一 介绍 二 基本思路 三 安装 Luckyexcel Luckysheet CDN引入 本地引入 四 具体实现 1 首先需要一个页面 用于excel的预览展示 2 编写Excel解析渲染函数 openExcel url链接 文件名
  • Flutter 基础(五)Route 路由以及页面间传值

    Route 路由以及页面间传值 一种页面跳转机制 路由 Route 对应到 Android 就是 Intent Flutter 路由分两种 新建路由 注册路由 需要Route表示 Navigator进行管理 跳转页面 Navigator p
  • 区块链与征信

    1 为什么要将区块链应用在征信上 1 1 中国征信产业发展现状 图1 中国征信产业发展现状 1 2 区块链征信的可行性分析 首先 从个人层面来说 区块链能帮助我们确立自身的数据主权 生成自己的信用资产 这是个人信用生产的基础 也是我们将来的
  • 各种动态规划算法的C语言

    以下是常见的几种动态规划算法的C语言实例 01背包问题 include
  • ftp用户只能ftp

    test用户 usermod s sbin nologin test 锁定telnet usermod s bin bash test 解锁
  • 【深度学习】动手学深度学习——编码器-解码器

    参考资料 https zh d2l ai chapter recurrent modern encoder decoder html 1 深度学习简介 核心思想 用数据编程 机器学习 寻找适用不同问题的函数形式 以及如何使用数据来获取函数的
  • discuz访问手机端跳转到PC端

    discuz访问手机端跳转到PC端 博主描述下遇到的问题 后台手机访问设置中手机端已开启 但手机端访问时却不能跳转到手机端 有些页面链接加上参数mobile 2才可以 对此 查看下 后台 手机访问设置 中以下两项是否打开 记得开启手机浏览器
  • Python从txt文件中提取特定数据

    本段代码用于 想要从一段txt文件中只提取目标数据的情况 代码 def get data txt path str epoch int 100 target str target data len int 5 num list 将提取出来的
  • PostgrelSQL清除WAL日志

    1 查看当前日志回写情况 pg controldata pg control version number 1300 Catalog version number 202007201 Database system identifier 6
  • hdu 4712 Hamming Distance

    Problem acm hdu edu cn showproblem php pid 4712 Reference 多向 bfs 思路 CSDN markdown 用 LaTeX Meaning 定义两个整数数 a 和 b 的汉明距离为 a
  • uniapp使用及踩坑项目记录

    环境准备 下载 HBuilderX 使用命令行创建项目 webstorm环境准备 webstorm支持rpx 1 下载wechat mini program support插件 2 在Preferences中搜索Wechat Mini Pr
  • weex组件的样式:不可使用间接筛选器

    weex本身自带了很多vue中没有的组件 例如
  • linux网卡做failover,tnsname之双IP failover问题

    如果是dataguard 经常在应用端配置双IP 以便在数据库切换时 应用端不用作任何的改变 但在ORACLE 9i里 这种方式配置的tnsname 存在着如下的问题 当需要对第一个IP进行停机维护时 即第一个IP不存在时 需要很长一段时间
  • 拳王虚拟项目公社:虚拟资源平台,是拳王内部虚拟副业项目的课程发布地

    表妹又在微信上找我 让我微信给她转账20块钱 我老公有给我零花钱的 只是这个月开销太大 想到他还要还房贷 就不好意思再问他要了 每次解释的理由也差不多 我明面上不好说什么 只是安慰说尽管找我 表妹从小是个乖乖女 长这么大做过最叛逆的事情 是
  • SD卡 FATFS CSV 文件中的 逗号和换行

    RFC 4180 Common Format and MIME Type for Comma Separated Values CSV Files 要点有 1 CSV的换行符号要使用CRLF 即 回车符 换行符 的形式 2 文字可以使用双引
  • Vue自定义全局指令

    当我们使用 Vue 构建应用时 经常需要在模板中添加一些自定义的指令 来实现期望的功能 这些指令可以全局定义 也可以定义在组件内 全局指令是指在应用的 main js 文件或其他入口文件中注册的指令 可以在应用的任何组件中使用 定义全局指令

随机推荐

  • Qt 主窗口点击按钮 弹出另一个自定义窗口

    为将要进行的工作做准备 代码实现功能 单击某个按钮后 弹出对话框 对话框中的内容可自行设计 1 建立一个主界面 主界面中有一个pushbotton按键 2 右键项目 gt 添加新文件 gt Qt设计师界面类 Part II 对话框的模态和非
  • Kaldi数据下载很慢

    运行kaldi 的run sh文件时 数据集在openslr上 数据集比较大 例如aishell 总共15G 国内网络情况下下载比较慢 1 修改为国内地址 例如 aishell 默认的run sh里写的是www openslr org re
  • html5 颜色随机变化,每次在HTML5 Canvas的.fillStyle中使用时,将画布图案随机化为不同的颜色(randomizing a canvas pattern to be a diff...

    每次在HTML5 Canvas的 fillStyle中使用时 将画布图案随机化为不同的颜色 randomizing a canvas pattern to be a different color every time it is used
  • 文本数据导入HBASE库找不到类com/google/common/collect/Multimap

    文本数据导入HBASE库找不到类com google common collect Multimap 打算将文本文件导入HBASE库 在运行命令的时候找不到类 com google common collect Multima hadoop
  • PyTorch实战使用Resnet迁移学习

    PyTorch实战使用Resnet迁移学习 项目结构 项目任务 项目代码 网络模型测试 项目结构 数据集存放在flower data文件夹 cat to name json是makejson文件运行生成的 TorchVision文件主要存放
  • springboot 整合 mongodb

    前言 前面通过 5 节的内容 我们学习了 mongodb 的使用 这节我们通过学过的知识运用 springboot 整合 mongodb 搭建一个小项目 项目搭建 springboot 基于 maven 项目搭建的具体过程这里就不再赘述了
  • style标签上的scoped属性

    vue中 在vue文件中的style标签上有一个特殊的属性 scoped 布尔值 作用 该属性的作用是将当前标签下的样式私有化 仅对当前组件起作用 只管当前组件和子组件的最外层 不控制自组件 原理 若是给style标签添加了scoped属性
  • 【python与数据分析】Python与数据分析概述

    目录 一 认识数据分析 1 数据分析的方法论与数据分析方法 一 七何分析法 建立框架 二 演绎树分析法 问题分层 三 PEST分析法 设计环境 四 金字塔原理分析法 建立逻辑 五 4P营销理论分析法 业务指导 六 SWOT分析法 战略竞争
  • 计算机专业大二了啥都没学怎么办

    如果您是计算机专业的大二学生 但是还没有学到很多内容 那么您可以考虑以下几点 加强自学 首先 您可以自学一些基本的计算机知识 如操作系统 算法 数据结构等 寻找资源 您可以寻找一些在线的学习资源 如课程 书籍 视频等 加深自己的知识储备 向
  • C语言函数递归例题讲解(超详细~)

    文章目录 递归题型讲解 例题1 例题2 例题3 递归题型讲解 例题1 根据下面递归函数 调用函数Fun 2 返回值是多少 int Fun int n if n 5 return 2 else return 2 Fun n 1 A 2 B 4
  • fit_transform含义

    fit transform X train 找出X train的均值和 标准差 并应用在X train上 对于X test 直接使用transform方法 此时StandardScaler已经保存了X train的均值和标准差
  • telnet 查看端口是否可访问

    1 首先为什么要写这篇文章 说到为什么还得从DNS服务器说起 我在我的电脑上安装了DNS服务器 但是用网络去访问还怎么都访问都不上去 于是我就打开dos窗口 用ping命令查看是否可以ping 如 ping 125 34 49 211 通
  • FANUC机器人程序实例

    FANUC机器人程序实例 PS 1 2 2 3 7 8 8 9 9 10 10 7为圆弧运动 6 1 3 4 4 5 5 6 6 7 7 6 为直线运动 先画图1 循环3次 等待3秒 再画图2 轨迹如上图所示 10个位置在同一平面 程序 位
  • linux配置SSH

    目录 一 ssh简介 二 ssh配置文件 三 ssh远程登录 四 ssh远程登录原理 4 1 对称加密 4 3非对称加密 一 ssh简介 SSH为建立在应用层上的安全协议 SSH是目前非常可靠 专门为远程登录会话和其它网了服务提供安全性的协
  • 程序员微信名昵称_微信营销手段之昵称命名

    这段时间 我玩微信玩的不少 但是主要还是把精力放在我的QQ空间了 但是我不管在微信上还是扣扣空间我都发现了一个怪现象 就是一直有人用广告名称做昵称 啥是广告名字呢 比如她是卖化妆品的 然后她就把微信昵称改成了某某化妆品销售 代购什么的 这种
  • 史上最全Unity3D游戏开发教程,从入门到精通(含学习路线图)

    Unity现在已经用的很广泛啦 可是却一直没有什么美术向的教程 程序员方面的内容在各个论坛都有讨论 但是美术似乎很弱势啊 明明美术也很需要掌握引擎方面的内容嘛 山谷里的野百合还有春天呢 我们美术也要出教程 很多同学想学习unity却不知道怎
  • react中背景图片和图片引入的方法

    有三种引入背景图片的方法 1 div 2 先import引入图片路径 再用es6语法中的 引用 import bgImage from assets images bgImage webp div 3 用require进行路径引用requi
  • 【图像增强】Debiased Subjective Assessment of Real-World Image Enhancement

    最近学习了CVPR2021的一篇文章 真实世界图像增强的去偏主观质量评价 Debiased Subjective Assessment of Real World Image Enhancement 一 前言 图像质量评价 Image Qu
  • 【Keras】TensorFlow分布式训练

    当我们拥有大量计算资源时 通过使用合适的分布式策略 我们可以充分利用这些计算资源 从而大幅压缩模型训练的时间 针对不同的使用场景 TensorFlow 在 tf distribute Strategy 中为我们提供了若干种分布式策略 使得我
  • R语言相关关系可视化函数梳理

    点击蓝字关注这个神奇的公众号 作者 赵镇宁 R语言中文社区特约作者 当考察多个变量间的相关关系时 通常将多个变量的两两关系以矩阵的形式排列起来 R提供了散点图矩阵 相关矩阵等多种可视化方案 囊括了众多函数 本文对R语言相关关系可视化的函数进