百度360必应搜狗淘宝本站头条
当前位置:网站首页 > 热门文章 > 正文

这也太简单了吧!一个函数完成数据相关性热图计算和展示

bigegpt 2024-09-17 12:37 63 浏览


NGS系列文章包括Linux基础 (PATH和path,傻傻分不清)、R基础 (ggplot2高效实用指南 (可视化脚本、工具、套路、配色))、Python基础 (Python学习极简教程)、NGS基础、转录组分析 (Nature重磅综述|关于RNA-seq你想知道的全在这)、ChIP-seq分析 ChIP-seq基本分析流程、单细胞测序分析 (重磅综述:三万字长文读懂单细胞RNA测序分析的最佳实践教程 (原理、代码和评述))、DNA甲基化分析、重测序分析、GEO数据挖掘典型医学设计实验GEO数据分析 (step-by-step) - Limma差异分析、火山图、功能富集、图形解读 (可视化之为什么要使用箱线图?)、GSEA (一文掌握GSEA,超详细教程)、WGCNA (WGCNA分析,简单全面的最新教程)等内容。

在进行基因分析中,我们时常会对样本或基因之间的相关性进行分析,虽然R语言中的cor函数可以进行计算,但并没有提供合适的可视化方法,今天我们介绍一个R包-ggcorr(https://briatte.github.io/ggcorr/),可以对数据的相关性分析进行可视化。

安装

ggcorr可通过GGally包进行安装:

#有两种安装方式
install.packages("GGally")
#or
source("https://raw.githubusercontent.com/briatte/ggcorr/master/ggcorr.R")#仅仅安装该功能

依赖包

ggcorr的主要依赖包是ggplot2软件包(ggplot2高效实用指南 (可视化脚本、工具、套路、配色))

library(ggplot2)

举个栗子|篮球统计

nba = read.csv("http://datasets.flowingdata.com/ppg2008.csv")
#让我们看一下数据格式
head(nba)
Name  G  MIN  PTS  FGM  FGA   FGP FTM FTA   FTP X3PM X3PA  X3PP ORB DRB TRB AST STL BLK  TO  PF
Dwyane Wade  79 38.6 30.2 10.8 22.0 0.491 7.5 9.8 0.765  1.1  3.5 0.317 1.1 3.9 5.0 7.5 2.2 1.3 3.4 2.3
LeBron James  81 37.7 28.4  9.7 19.9 0.489 7.3 9.4 0.780  1.6  4.7 0.344 1.3 6.3 7.6 7.2 1.7 1.1 3.0 1.7
Kobe Bryant  82 36.2 26.8  9.8 20.9 0.467 5.9 6.9 0.856  1.4  4.1 0.351 1.1 4.1 5.2 4.9 1.5 0.5 2.6 2.3
Dirk Nowitzki  81 37.7 25.9  9.6 20.0 0.479 6.0 6.7 0.890  0.8  2.1 0.359 1.1 7.3 8.4 2.4 0.8 0.8 1.9 2.2
Danny Granger  67 36.2 25.8  8.5 19.1 0.447 6.0 6.9 0.878  2.7  6.7 0.404 0.7 4.4 5.1 2.7 1.0 1.4 2.5 3.1
Kevin Durant  74 39.0 25.3  8.9 18.8 0.476 6.1 7.1 0.863  1.3  3.1 0.422 1.0 5.5 6.5 2.8 1.3 0.7 3.0 1.8

我们可以看到top3分别是WadeJamesKobe(洛杉矶的凌晨4点。。。。再也见不到了o(╥﹏╥)o)。

让我们将整个数据集直接用ggcorr进行分析,计算每一列数值列之间的相关性,并绘制一个下三角热图展示:

ggcorr(nba)
## Warning in ggcorr(nba): data in column(s) 'Name' are not numeric and were
## ignored
# 颜色设置的一个Warning,暂时忽略
## Warning: Non Lab interpolation is deprecated

相关性矩阵是一个对称阵,这里用下三角热图展示全部信息。每个格子的颜色代表对于行与列的相关性,颜色越红正相关性越强,越蓝负相关性越强。可以看出:

  1. PTS (Percent of Team's Points, 每场得分), FGM (Field Goals Made, 投篮命中率), FGA (Field Goals Attempted, 尝试投篮次数)之间正相关性比较强,确实多尝试才能获得更高的分数;
  2. DRB (Defensive Rebounds,防守篮板), ORB (Defensive Rebounds,进攻篮板), TRB (Defensive Rebounds,总篮板)之间正相关性比较强;
  3. 3PA (Defensive Rebounds, 三分投篮),3PM (3 Point Field Goals Made,3分命中),3PP (3 Point Field Goal Percentage,3分命中率), FTP (Free Throw Percentage,罚球命中率)之间正相关,但与篮板强负相关,这也是挺符合场上分工的。

更多篮球术语见:

  • https://www.basketball-reference.com/about/glossary.html
  • https://stats.nba.com/help/glossary/#3ppct

关联数据集

ggcorr的第一个参数称为data。可以是一个数据框(如上所示)或一个矩阵,在绘制之前将其转换为数据框:

ggcorr(matrix(runif(5), 2, 5))

ggcorr也可以通过cor_matrix接受相关矩阵,在这种情况下,它的第一个参数必须设置为NULL,以指示ggcorr应该使用相关矩阵:

ggcorr(data = NULL, cor_matrix = cor(nba[, -1], use = "everything"))

相关性方法

ggcorr支持cor函数提供的所有相关方法。

相关矩阵中需要考虑的第一个设置是要使用的observations的选择。此设置可以采用以下任何值:“everything”“ all.obs”“complete.obs”“na.or.complete”“ pairwise.complete.obs”(ggcorr使用的默认值)。

ggcorr要求的第二个设置是要计算的相关系数的类型。有三个可能的值:“pearson”(ggcorr和cor使用的默认值),“kendall”或“spearman”。cor function的文档中说明了每个设置之间的差异。一般而言,除非数据是序数,否则默认选择应为“pearson”,即基于pearson的方法产生相关系数。

例如:

# Pearson correlation coefficients, using pairwise observations (default method)
ggcorr(nba[, -1], method = c("pairwise", "pearson"))
# Pearson correlation coefficients, using all observations
ggcorr(nba[, -1], method = c("everything", "pearson"))
# Kendall correlation coefficients, using complete observations
ggcorr(nba[, -1], method = c("complete", "kendall"))
# Spearman correlation coefficients, using strictly complete observations
ggcorr(nba[, -1], method = c("all.obs", "spearman"))
  • R语言 - 热图绘制 (heatmap)
  • R语言 - 热图简化
  • R语言 - 热图美化

绘图参数

控制色阶

默认情况下,ggcorr使用从-1+1的连续色标显示矩阵中表示相关性的强度。要切换到分类颜色,需要添加nbreaks参数,该参数指定色标中应包含多少种区块颜色:

ggcorr(nba[, 2:15], nbreaks = 5)

使用nbreaks参数时,通过digits参数控制色阶中显示的位数。digits参数默认为两位数字,但是如上例所示,如果breaks不需要更高的精度,它将默认为一位数字。

对色阶的进一步调控包括:name参数,用于设置其标题;legend.size参数,用于设置图例文本的大小;以及legend.position参数,用于控制图例的显示位置。使用方式和ggplot2相同:

ggcorr(nba[, 2:15], name = expression(rho), legend.position = "bottom", legend.size = 12) +
  guides(fill = guide_colorbar(barwidth = 18, title.vjust = 0.75)) +
  theme(legend.title = element_text(size = 14))

控制调色板

ggcorr使用默认的颜色渐变,该渐变从鲜红色到浅灰色再到鲜蓝色。可以通过低,中和高参数来修改此梯度,这与ggplot2中的scale_gradient2控制参数类似:

ggcorr(nba[, 2:15], low = "steelblue", mid = "white", high = "darkred")
## Warning: Non Lab interpolation is deprecated

默认情况下,渐变的中点设置为0.0,表示零相关。中点参数可用于修改此设置。特别是,将中点设置为NULL时将自动选择中值相关系数为中点,并向用户显示该值:

ggcorr(nba[, 2:15], midpoint = NULL)
## Color gradient midpoint set at median correlation to 0.08

控制色阶颜色的最后一个选择是通过调色板参数使用ColorBrewer调色板。仅当色阶进行分类时(即使用nbreaks参数时),才应使用此参数:

ggcorr(nba[, 2:15], nbreaks = 4, palette = "RdGy")
  • 论文图表基本规范
  • 学术图表的基本配色方法
  • 数据可视化基本套路总结

控制几何形状

默认情况下,ggcorr使用彩色图块表示相关系数的强度,类似于热图表示方式。

ggcorr也可以将相关性表示为按比例大小的圆圈,就是将其geom参数设置为“circle”

ggcorr(nba[, 2:15], geom = "circle", nbreaks = 5)

此外,用户可以通过min_sizemax_size参数设置圆的最小和最大尺寸:

ggcorr(nba[, 2:15], geom = "circle", nbreaks = 5, min_size = 0, max_size = 6)
  • R语言学习 - 散点图绘制
  • Volcano plot | 别再问我这为什么是火山图

控制系数显示

ggcorr可以通过将label参数设置为TRUE来在相关矩阵的顶部显示相关系数:

ggcorr(nba[, 2:15], label = TRUE)

label_colorlabel_size参数允许设置系数标签的样式:

ggcorr(nba[, 2:15], nbreaks = 4, palette = "RdGy", label = TRUE, label_size = 3, label_color = "white")

label_round参数进一步控制系数标签中显示的位数(默认为一位数字),label_alpha参数控制标签的透明度。如果label_alpha设置为TRUE,则透明度级别将像相关系数一样变化,并且相关系数的绝对值越小,透明度越高:

ggcorr(nba[, 2:15], label = TRUE, label_size = 3, label_round = 2, label_alpha = TRUE)

控制变量标签

在上面的几个示例中,变量标签(在相关矩阵的对角线上显示)的呈现不一定是最佳的。要修改这些标签的外观,要做的就是将geom_text支持的任何参数直接传递给ggcorr。以下示例显示了如何在将标签向左移动并更改其颜色的同时减小标签的尺寸:

ggcorr(nba[, 2:15], hjust = 0.75, size = 5, color = "grey50")

相关矩阵中的变量标签可能会出现的一个问题是,变量标签太长而无法在图的左下方完整显示。如下图:

ggcorr(nba[, 3:16], hjust = 0.75, size = 5, color = "grey50")

要解决此问题,ggcorr可以通过layout.exp参数在绘图的水平轴上添加一些空格,有助于显示长名称的变量:

ggcorr(nba[, 3:16], hjust = 0.75, size = 5, color = "grey50", layout.exp = 1)


撰文:张虎
编辑:生信宝典

相关推荐

方差分析简介(方差分析通俗理解)

介绍方差分析(ANOVA,AnalysisofVariance)是一种广泛使用的统计方法,用于比较两个或多个组之间的均值。单因素方差分析是方差分析的一种变体,旨在检测三个或更多分类组的均值是否存在...

正如404页面所预示,猴子正成为断网元凶--吧嗒吧嗒真好吃

吧嗒吧嗒,绘图:MakiNaro你可以通过加热、冰冻、水淹、模塑、甚至压溃压力来使网络光缆硬化。但用猴子显然是不行的。光缆那新挤压成型的塑料外皮太尼玛诱人了,无法阻挡一场试吃盛宴的举行。印度政府正...

Python数据可视化:箱线图多种库画法

概念箱线图通过数据的四分位数来展示数据的分布情况。例如:数据的中心位置,数据间的离散程度,是否有异常值等。把数据从小到大进行排列并等分成四份,第一分位数(Q1),第二分位数(Q2)和第三分位数(Q3)...

多组独立(完全随机设计)样本秩和检验的SPSS操作教程及结果解读

作者/风仕在上一期,我们已经讲完了两组独立样本秩和检验的SPSS操作教程及结果解读,这期开始讲多组独立样本秩和检验,我们主要从多组独立样本秩和检验介绍、两组独立样本秩和检验使用条件及案例的SPSS操作...

方差分析 in R语言 and Excel(方差分析r语言例题)

今天来写一篇实际中比较实用的分析方法,方差分析。通过方差分析,我们可以确定组别之间的差异是否超出了由于随机因素引起的差异范围。方差分析分为单因素方差分析和多因素方差分析,这一篇先介绍一下单因素方差分析...

可视化:前端数据可视化插件大盘点 图表/图谱/地图/关系图

前端数据可视化插件大盘点图表/图谱/地图/关系图全有在大数据时代,很多时候我们需要在网页中显示数据统计报表,从而能很直观地了解数据的走向,开发人员很多时候需要使用图表来表现一些数据。随着Web技术的...

matplotlib 必知的 15 个图(matplotlib各种图)

施工专题,我已完成20篇,施工系列几乎覆盖Python完整技术栈,目标只总结实践中最实用的东西,直击问题本质,快速帮助读者们入门和进阶:1我的施工计划2数字专题3字符串专题4列表专题5流程控制专题6编...

R ggplot2常用图表绘制指南(ggplot2绘制折线图)

ggplot2是R语言中强大的数据可视化包,基于“图形语法”(GrammarofGraphics),通过分层方式构建图表。以下是常用图表命令的详细指南,涵盖基本语法、常见图表类型及示例,适合...

Python数据可视化:从Pandas基础到Seaborn高级应用

数据可视化是数据分析中不可或缺的一环,它能帮助我们直观理解数据模式和趋势。本文将全面介绍Python中最常用的三种可视化方法。Pandas内置绘图功能Pandas基于Matplotlib提供了简洁的绘...

Python 数据可视化常用命令备忘录

本文提供了一个全面的Python数据可视化备忘单,适用于探索性数据分析(EDA)。该备忘单涵盖了单变量分析、双变量分析、多变量分析、时间序列分析、文本数据分析、可视化定制以及保存与显示等内容。所...

统计图的种类(统计图的种类及特点图片)

统计图是利用几何图形或具体事物的形象和地图等形式来表现社会经济现象数量特征和数量关系的图形。以下是几种常见的统计图类型及其适用场景:1.条形图(BarChart)条形图是用矩形条的高度或长度来表示...

实测,大模型谁更懂数据可视化?(数据可视化和可视化分析的主要模型)

大家好,我是Ai学习的老章看论文时,经常看到漂亮的图表,很多不知道是用什么工具绘制的,或者很想复刻类似图表。实测,大模型LaTeX公式识别,出乎预料前文,我用Kimi、Qwen-3-235B...

通过AI提示词让Deepseek快速生成各种类型的图表制作

在数据分析和可视化领域,图表是传达信息的重要工具。然而,传统图表制作往往需要专业的软件和一定的技术知识。本文将介绍如何通过AI提示词,利用Deepseek快速生成各种类型的图表,包括柱状图、折线图、饼...

数据可视化:解析箱线图(box plot)

箱线图/盒须图(boxplot)是数据分布的图形表示,由五个摘要组成:最小值、第一四分位数(25th百分位数)、中位数、第三四分位数(75th百分位数)和最大值。箱子代表四分位距(IQR)。IQR是...

[seaborn] seaborn学习笔记1-箱形图Boxplot

1箱形图Boxplot(代码下载)Boxplot可能是最常见的图形类型之一。它能够很好表示数据中的分布规律。箱型图方框的末尾显示了上下四分位数。极线显示最高和最低值,不包括异常值。seaborn中...