桓峰基因公众号推出基于R语言绘图教程并配有视频在线教程,目前整理出来的教程目录如下:

FigDraw 1. SCI 文章的灵魂 之 简约优雅的图表配色
FigDraw 2. SCI 文章绘图必备 R 语言基础
FigDraw 3. SCI 文章绘图必备 R 数据转换
FigDraw 4. SCI 文章绘图之散点图 (Scatter)
FigDraw 5. SCI 文章绘图之柱状图 (Barplot)
FigDraw 6. SCI 文章绘图之箱线图 (Boxplot)
FigDraw 7. SCI 文章绘图之折线图 (Lineplot)
FigDraw 8. SCI 文章绘图之饼图 (Pieplot)
FigDraw 9. SCI 文章绘图之韦恩图 (Vennplot)
FigDraw 10. SCI 文章绘图之直方图 (HistogramPlot)
FigDraw 11. SCI 文章绘图之小提琴图 (ViolinPlot)
FigDraw 12. SCI 文章绘图之相关性矩阵图(Correlation Matrix)


前言

在一些学术论文中,经常会看到用「相关性矩阵(correlation matrix)」 去表示数据集中每对数据变量间的关系,可以实现对数据集大致情况的一个快速预览,常常用于探索性分析。本期推文就汇总一下6种绘制相关性矩阵的方法。

什么是相关性矩阵?

相关性分析是指对两个或多个具备相关性的变量元素进行分析,从而衡量两个变量因素的相关密切程度。相关性的元素之间需要存在一定的联系或者概率才可以进行相关性分析。

当两个变量之间存在非常强烈的相互依赖关系的时候,我们就可以说两个变量之间存在高度相关性。若两组的值一起增大,我们称之为正相关,若一组的值增大时,另一组的值减小,我们称之为负相关。

默认一般使用皮尔逊算法算相关性。皮尔逊相关系数广泛用于度量两个变量之间的相关程度,其值介于-1与1之间。

计算完相关性后,我们通过相关性矩阵做可视化。矩阵的上下中三个面板支持多种图案,有热力图,柱形图,散点图,折线图,饼图等多种模式可供选择。

软件安装

这我们将介绍6种方法,所以安装的软件包稍微多了一些,如下:

if (!require(corrplot)) install.packages("corrplot")
if (!require(ggcorrplot)) install.packages("ggcorrplot")
if (!require(corrgram)) install.packages("corrgram")
if (!require(PerformanceAnalytics)) install.packages("PerformanceAnalytics")
if (!require(GGally)) install.packages("GGally")

数据读取

这里所有的绘制方法我们都采用同一个数据集即为mtcars,如下:

data(mtcars)
mtcars
##                      mpg cyl  disp  hp drat    wt  qsec vs am gear carb
## Mazda RX4           21.0   6 160.0 110 3.90 2.620 16.46  0  1    4    4
## Mazda RX4 Wag       21.0   6 160.0 110 3.90 2.875 17.02  0  1    4    4
## Datsun 710          22.8   4 108.0  93 3.85 2.320 18.61  1  1    4    1
## Hornet 4 Drive      21.4   6 258.0 110 3.08 3.215 19.44  1  0    3    1
## Hornet Sportabout   18.7   8 360.0 175 3.15 3.440 17.02  0  0    3    2
## Valiant             18.1   6 225.0 105 2.76 3.460 20.22  1  0    3    1
## Duster 360          14.3   8 360.0 245 3.21 3.570 15.84  0  0    3    4
## Merc 240D           24.4   4 146.7  62 3.69 3.190 20.00  1  0    4    2
## Merc 230            22.8   4 140.8  95 3.92 3.150 22.90  1  0    4    2
## Merc 280            19.2   6 167.6 123 3.92 3.440 18.30  1  0    4    4
## Merc 280C           17.8   6 167.6 123 3.92 3.440 18.90  1  0    4    4
## Merc 450SE          16.4   8 275.8 180 3.07 4.070 17.40  0  0    3    3
## Merc 450SL          17.3   8 275.8 180 3.07 3.730 17.60  0  0    3    3
## Merc 450SLC         15.2   8 275.8 180 3.07 3.780 18.00  0  0    3    3
## Cadillac Fleetwood  10.4   8 472.0 205 2.93 5.250 17.98  0  0    3    4
## Lincoln Continental 10.4   8 460.0 215 3.00 5.424 17.82  0  0    3    4
## Chrysler Imperial   14.7   8 440.0 230 3.23 5.345 17.42  0  0    3    4
## Fiat 128            32.4   4  78.7  66 4.08 2.200 19.47  1  1    4    1
## Honda Civic         30.4   4  75.7  52 4.93 1.615 18.52  1  1    4    2
## Toyota Corolla      33.9   4  71.1  65 4.22 1.835 19.90  1  1    4    1
## Toyota Corona       21.5   4 120.1  97 3.70 2.465 20.01  1  0    3    1
## Dodge Challenger    15.5   8 318.0 150 2.76 3.520 16.87  0  0    3    2
## AMC Javelin         15.2   8 304.0 150 3.15 3.435 17.30  0  0    3    2
## Camaro Z28          13.3   8 350.0 245 3.73 3.840 15.41  0  0    3    4
## Pontiac Firebird    19.2   8 400.0 175 3.08 3.845 17.05  0  0    3    2
## Fiat X1-9           27.3   4  79.0  66 4.08 1.935 18.90  1  1    4    1
## Porsche 914-2       26.0   4 120.3  91 4.43 2.140 16.70  0  1    5    2
## Lotus Europa        30.4   4  95.1 113 3.77 1.513 16.90  1  1    5    2
## Ford Pantera L      15.8   8 351.0 264 4.22 3.170 14.50  0  1    5    4
## Ferrari Dino        19.7   6 145.0 175 3.62 2.770 15.50  0  1    5    6
## Maserati Bora       15.0   8 301.0 335 3.54 3.570 14.60  0  1    5    8
## Volvo 142E          21.4   4 121.0 109 4.11 2.780 18.60  1  1    4    2

绘制方法

这里展示了六个不同的软件包绘制相关矩阵图的方法,总有一款适合您,话不多说,上代码和版式,挑选自己觉得顺眼的使用即可。

1. corrplot {corrplot}

A visualization of a correlation matrix. Description A graphical display of a correlation matrix, confidence interval. The details are paid great attention to. It can also visualize a general matrix by setting is.corr = FALSE.

简单相关矩阵

library(corrplot)
col1 <- colorRampPalette(c("#B2182B", "white", "#4D4D4D"))
corrplot(cor(mtcars), type = "upper", method = "ellipse", col = col1(100), order = "hclust",addrect = 2, tl.col = "black", tl.srt = 45)

组合样式

corrplot.mixed(cor(mtcars), lower = "ellipse", upper = "circle", tl.col = "black",tl.srt = 45)

2. ggcorrplot {ggcorrplot}

Visualization of a correlation matrix using ggplot2 Description ggcorrplot(): A graphical display of a correlation matrix using ggplot2. cor_pmat(): Compute a correlation matrix p-values.

简单矩阵图

library(ggcorrplot)
library(ggtext)
data(mtcars)
corr <- round(cor(mtcars), 1)
p.mat <- cor_pmat(mtcars)
colors = c("#B2182B", "white", "#4D4D4D")ggcorrplot(corr, colors = colors, ggtheme = ggplot2::theme_minimal) + labs(x = "",y = "", title = "Example of ggcorrplot charts makes") + theme(plot.title = element_markdown(hjust = 0.5,vjust = 0.5, color = "black", size = 15, margin = margin(t = 1, b = 12)), plot.subtitle = element_markdown(hjust = 0,vjust = 0.5, size = 20), plot.caption = element_markdown(face = "bold", size = 15))

圆形右下

ggcorrplot(corr, colors = colors, method = "circle", outline.color = "black", lab = TRUE,type = "lower", lab_size = 4) + labs(x = "", y = "", title = "Example of ggcorrplot charts makes") +theme(plot.title = element_markdown(hjust = 0.5, vjust = 0.5, color = "black",size = 15, margin = margin(t = 1, b = 12)), plot.subtitle = element_markdown(hjust = 0,vjust = 0.5, size = 20), plot.caption = element_markdown(face = "bold", size = 15))

方形上半面

ggcorrplot(cor(mtcars), colors = colors, outline.color = "black", lab = TRUE, type = "upper",p.mat = p.mat, digits = 2) + labs(x = "", y = "", title = "Example of ggcorrplot charts makes") +theme(plot.title = element_markdown(hjust = 0.5, vjust = 0.5, color = "black",size = 15, margin = margin(t = 1, b = 12)), plot.subtitle = element_markdown(hjust = 0,vjust = 0.5, size = 20), plot.caption = element_markdown(face = "bold", size = 15))

3. corrgram {corrgram}

Draw a correlogram Description The corrgram function produces a graphical display of a correlation matrix, called a correlogram. The cells of the matrix can be shaded or colored to show the correlation value.

默认

library(corrgram)
corrgram(mtcars, lower.panel = panel.shade, upper.panel = NULL, text.panel = panel.txt,cor.method = "pearson", main = "Car Mileage Data")

添加饼图

上三角区域使用饼图表示相关系数;蓝色和从12点钟处开始顺时针填充饼图表示两个变量呈正相关,红色和逆时针方向填充饼图表示变量负相关:

corrgram(mtcars, order = TRUE, lower.panel = panel.shade, upper.panel = panel.pie,text.panel = panel.txt, main = "Correlogram of mtcar intercorrelations")

4. ggcorr {GGally}

Correlation matrix Description Function for making a correlation matrix plot, using ggplot2. The function is directly inspired by Tian Zheng and Yu-Sung Su’s corrplot function in the ‘arm’ package. Please visit https://github.com/briatte/ggcorr for the latest version of ggcorr, and see the vignette at https://briatte.github.io/ggcorr/ for many examples of how to use it.

默认

library(GGally)
ggcorr(mtcars, label = TRUE, label_alpha = TRUE)

绘制相关系数矩阵图

ggpairs(mtcars, columns = c("mpg", "cyl", "disp"), upper = list(continuous = wrap("cor",size = 6)), lower = list(continuous = "smooth")) + theme_bw()

5. ggcorrmat {ggstatsplot}

Visualization of a correlation matrix Description Correlation matrix or a dataframe containing results from pairwise correlation tests. The package internally uses ggcorrplot::ggcorrplot for creating the visualization matrix, while the correlation analysis is carried out using the correlation::correlation function.

基础样例

library(ggstatsplot)
p1 <- ggcorrmat(data = mtcars, colors = c("#B2182B", "white", "#4D4D4D"), title = "Correlalogram Example of ggstatsplot charts makes",subtitle = "processed charts with ggcorrmat()", caption = "Visualization by DataCharm",ggtheme = hrbrthemes::theme_ipsum(base_family = "Roboto Condensed"), ) + theme(plot.title = element_text(hjust = 0.5,vjust = 0.5, color = "black", size = 10, margin = margin(t = 1, b = 12)), plot.subtitle = element_text(hjust = 0,vjust = 0.5, size = 8), plot.caption = element_text(face = "bold", size = 10))
p1

定制化操作

p2 <- ggcorrmat(data = mtcars, matrix.type = "lower", ggcorrplot.args = list(lab_col = "black",lab_size = 4, tl.srt = 90, pch.col = "red", pch.cex = 10), title = "Correlalogram Example of ggstatsplot charts makes",subtitle = "Processed charts with ggcorrmat()", caption = "Visualization by DataCharm") +theme(plot.title = element_text(hjust = 0.5, vjust = 0.5, color = "black", size = 10,margin = margin(t = 1, b = 12)), plot.subtitle = element_text(hjust = 0,vjust = 0.5, size = 8), plot.caption = element_text(face = "bold", size = 10))
p2

组合

对于支持ggplot2的软件包,可以直接组合图形,但是不支持的就需要另找其他方法了!

library(patchwork)
p1 | p2

6. chart.Correlation {PerformanceAnalytics}

correlation matrix chart Visualization of a Correlation Matrix. On top the (absolute) value of the correlation plus the result of the cor.test as stars. On bottom, the bivariate scatterplots, with a fitted line

library(PerformanceAnalytics)
my_data <- mtcars[, c(1, 3, 4, 5, 6, 7)]
chart.Correlation(my_data, histogram = TRUE, pch = 19)

References:

  1. Robert I. Kabacoff. R in Action-Data analysis and graphics with R.Manning Publications Co. 2015: 283-287.

  2. Friendly, Michael. 2002. Corrgrams: Exploratory Displays for Correlation Matrices. The American Statistician, 56, 316–324.

  3. D. J. Murdoch and E. D. Chow. 1996. A Graphical Display of Large Correlation Matrices. The American Statistician, 50, 178-180.

  4. Michael Friendly (2002). Corrgrams: Exploratory displays for correlation matrices. The American Statistician, 56, 316–324.

这期相关性矩阵绘制其实蛮简单的,在是使用过程中根据自己的数据情况进行调整参数,我相信通过我这套教程,各位老师、同学都能够实现相关性矩阵绘图自由,未来也会成为一名会作图的科研人员!
图片

FigDraw 12. SCI 文章绘图之相关性矩阵图(Correlation Matrix)相关推荐

  1. FigDraw 13. SCI 文章绘图之桑葚图及文章复现(Sankey)

    点击关注,桓峰基因 桓峰基因 生物信息分析,SCI文章撰写及生物信息基础知识学习:R语言学习,perl基础编程,linux系统命令,Python遇见更好的你 127篇原创内容 公众号 桓峰基因公众号推 ...

  2. FigDraw 17. SCI 文章绘图之主成分绘图(pca3d)

    点击关注,桓峰基因 桓峰基因公众号推出基于R语言绘图教程并配有视频在线教程,目前整理出来的教程目录如下: FigDraw 1. SCI 文章的灵魂 之 简约优雅的图表配色 FigDraw 2. SCI ...

  3. FigDraw 14. SCI 文章绘图之和弦图及文章复现(Chord Diagram)

    点击关注,桓峰基因 桓峰基因 生物信息分析,SCI文章撰写及生物信息基础知识学习:R语言学习,perl基础编程,linux系统命令,Python遇见更好的你 128篇原创内容 公众号 桓峰基因公众号推 ...

  4. FigDraw 11. SCI 文章绘图之小提琴图 (ViolinPlot)

    桓峰基因公众号推出基于R语言绘图教程并配有视频在线教程,目前整理出来的教程目录如下: FigDraw 1. SCI 文章的灵魂 之 简约优雅的图表配色 FigDraw 2. SCI 文章绘图必备 R ...

  5. FigDraw 5. SCI 文章绘图之柱状图 (Barplot)

    点击关注,桓峰基因 桓峰基因 生物信息分析,SCI文章撰写及生物信息基础知识学习:R语言学习,perl基础编程,linux系统命令,Python遇见更好的你 108篇原创内容 公众号 桓峰基因的教程不 ...

  6. DNA 12. SCI 文章绘图之全基因组关联分析可视化(GWAS)

    点击关注,桓峰基因 桓峰基因 生物信息分析,SCI文章撰写及生物信息基础知识学习:R语言学习,perl基础编程,linux系统命令,Python遇见更好的你 134篇原创内容 公众号 桓峰基因公众号推 ...

  7. FigDraw 2. SCI 文章绘图必备 R 语言基础

    点击关注,桓峰基因 桓峰基因 生物信息分析,SCI文章撰写及生物信息基础知识学习:R语言学习,perl基础编程,linux系统命令,Python遇见更好的你 70篇原创内容 公众号 关注公众号,桓峰基 ...

  8. FigDraw 4. SCI 文章绘图之散点图 (Scatter)

    点击关注,桓峰基因 桓峰基因 生物信息分析,SCI文章撰写及生物信息基础知识学习:R语言学习,perl基础编程,linux系统命令,Python遇见更好的你 72篇原创内容 公众号 前两期简单介绍了 ...

  9. FigDraw 9. SCI 文章绘图之直方图 (HistogramPlot)

    前 言 当我们提到直方图时,一定会想到直方图和密度图,一般这两种方法都会结合在一起,有着千丝万缕的联系,下面我们就来了解一下其中的含义以及绘图技巧! 统计直方图 统计直方图( Histogram),形 ...

最新文章

  1. DNS tunnel的原理及实战
  2. 一二三维矩阵的拼接问题
  3. install yael on the ubuntu 12.04
  4. 【Android】HorizontalScrollView内子控件横向拖拽
  5. presto支持标准sql吗_presto技术文档
  6. 基于Echarts5实现的动态排序柱状图
  7. 语法制导的翻译是如何实现的_考研寄宿:怎样提高英语翻译的能力?
  8. idea创建jsp项目与JDBC连接数据库
  9. H264压缩码率与GOP
  10. 贪心算法c语言部分背包,c语言背包问题_背包问题贪心算法_背包问题 贪心算法(13)...
  11. cesium 实现地形挖洞的拖动效果
  12. 应用程序“Parallels Desktop“无法打开MAC电脑打不开
  13. oracle数据库报错:ORA-01654: 索引 XXX 无法通过 128 (在表空间 xxx 中) 扩展
  14. 长期:如何找到适合自己的节奏?
  15. C语言入门 九九乘法表
  16. word文档插图片后与文字距离很大怎么办
  17. python中assert是什么意思_python assert函数是什么以及如何使用?
  18. Linux新手上路(六):文件打包和解压缩
  19. bi平台是如何进行数据的采集呢
  20. Linux:makefile简易入门

热门文章

  1. 《高效的秘密》第一章,第二章读后感
  2. 计算机组成符号,计算机组成原理 符号
  3. 2021-06-29ansible解决python版本依赖
  4. 发现了两个神奇的网站!边做试验边学编程!
  5. 【难学易用c++ 之 继承】
  6. 复变函数-----区域
  7. 【ML-SVM案例学习】案例一:对鸢尾花数据进行SVM分类(附源码)
  8. “又一家公司取消大小周,薪资总额竟不变?”
  9. JavaScript武器库
  10. chicken-and-egg problem的一些想法