pheatmap带你轻松绘制聚类相关性热图

2023-06-23 06:58:03 浏览数 (3)

欢迎关注R语言数据分析指南

最近有朋友询问如何使用pheatmap绘制相关性热图,小编之前已经写过各种ggplot2风格的热图,但是对于pheatmap却是很少涉及,这一节就来介绍一下pheatmap绘制相关性热图,希望各位观众老爷能够喜欢。数据 代码已经上传2023VIP群,加群的观众老爷请自行下载

关注下方公众号下回更新不迷路

加载R包

代码语言:text复制
library(tidyverse)
library(psych)
library(pheatmap)
library(magrittr)
# devtools::install_github("thomasp85/scico")
library(scico)

导入数据

代码语言:text复制
# 读取环境数据文件并存储到env变量中,使用tab作为分隔符,第一列作为行名,不检查列名的合法性
env <- read.delim("env.xls", header = TRUE, sep = "t", row.names = 1, check.names = FALSE)

# 读取物种数据文件并存储到genus变量中,使用tab作为分隔符,第一列作为行名,不检查列名的合法性
genus <- read.delim("genus.xls", header = TRUE, sep = "t", row.names = 1, check.names = FALSE) %>%
  t() %>% as.data.frame()

相关性分析

代码语言:txt复制
# 使用pearson方法计算环境数据和物种数据之间的相关系数和p-value,并进行多重比较法的FDR校正
pp <- corr.test(env, genus, method = "pearson", adjust = "fdr")
cor <- pp$r # 获取相关系数矩阵
pvalue <- pp$p # 获取p-value矩阵

数据整合

代码语言:txt复制
# 将相关系数矩阵转换为长格式,并添加p-value和显著性符号列
df <- melt(cor) %>% 
  mutate(pvalue = melt(pvalue)[, 3],
         p_signif = symnum(pvalue, corr = FALSE, na = FALSE,  
                           cutpoints = c(0, 0.001, 0.01, 0.05, 0.1, 1), 
                           symbols = c("***", "**", "*", "", " "))) %>% 
  set_colnames(c("env", "genus", "r", "p", "p_signif"))

格式转换

由于后面我们需要使用pheatmap绘图,因此在此需要将长数据转换为宽表

代码语言:txt复制
#将相关系数矩阵转换为宽格式,行名为环境变量,列名为物种,值为相关系数
rvalue <- df %>% 
  select(1, 2, 3) %>% 
  pivot_wider(names_from = "genus", values_from = r) %>% 
  column_to_rownames(var = "env")

# 将显著性符号矩阵转换为宽格式,行名为环境变量,列名为物种,值为显著性符号
pvalue <- df %>% 
  select(1, 2, 5) %>% 
  pivot_wider(names_from = "genus", values_from = p_signif) %>% 
  column_to_rownames(var = "env")

定义颜色

在此使用昨天介绍的scico包制作一个调色板

代码语言:text复制
mycol <- scico(100, palette = "vik")

pheatmap绘制热图

代码语言:text复制
# 绘制热图,显示相关系数,行列聚类,无边框,显示p-value作为数字,设置数字字体大小和颜色
# 设置主标题为空格,设置单元格宽度和高度,使用自定义颜色映射
pheatmap(rvalue, scale = "none", cluster_row = TRUE, cluster_col = TRUE, border = NA,
         display_numbers = pvalue, fontsize_number = 12, number_color = "white",
         main = " ",
         cellwidth = 21, cellheight = 20, color = mycol)

有需要学习个性化数据可视化的朋友,欢迎到小编的淘宝店铺 R语言数据分析指南购买2023年度会员文档同步更新中 初始价格99元6月后将调整价格为149元,内容主要包括各种高分论文的图表分析复现以及一些个性化图表的绘制均包含数据 代码;按照往年数据小编年产出约在150 以上

购买后微信发小编订单截图即邀请进新的会员交流群,小编的文档为按年售卖,只包含当年度的除系列课程外的文档,有需要往年文档的朋友也可下单购买,需要了解更多信息的朋友欢迎交流咨询。

2023会员群精彩内容

1 人点赞