R语言作图——热图聚类及其聚类结果输出

该代码示例展示了如何在R中利用pheatmap库创建热图,并对数据矩阵进行行和列的排序。首先读取csv和txt文件,然后进行数据处理,包括矩阵转换和添加注释信息。接着,生成热图并保存为tif图像。最后,根据热图的排序保存新的数据矩阵为txt文件。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

更新

目前pheatmap包有更新,

col_oder=result$tree_col$order # 保存热图列顺序(序号)
row_oder=result$tree_row$order # 保存热图行顺序(序号)

不能提取顺序了,可以回退pheatmap包到1.0.8

install.packages("devtools")
devtools::install_version("pheatmap", version = "1.0.8")  # 例如用1.0.8

代码

不多说了,做个记录,代码如下。

library(pheatmap)
library(RColorBrewer)
# args = commandArgs(TRUE)
betafile = "twist_common_panel_434.csv"
infofile = "twist_common_panel_434.txt"
title = "twist_common_panel"
# readbeta <- function(data){
#   dat <- read.table(data, header = T,stringsAsFactors = F)
#   dat$pos <- paste(dat$chr, dat$start, sep = "_")
#   dat$chr = dat$start = NULL
#   rownames(dat) <- dat$pos
#   dat$pos <- NULL
#   dat
# }
# d <- readbeta(betafile)
# d<-read.table(betafile,header=T,stringsAsFactors=FALSE,row.names = 1)
# d <- as.matrix(t(d))
d <- read.csv(betafile, row.names = 1)
info <- read.table(infofile,header = F,sep = "\t")
colnames(info) <- c("id","group")
rownames(info) <- info$id
# table(rownames(d) == info$id)
#排序
loc = match(rownames(d), rownames(info))
dd <- d[loc,]
col_anno <- as.data.frame(info[,2])
rownames(col_anno) <- rownames(info)
colnames(col_anno) <- 'group'
tiff(paste0(title,".tif"),width = 2000,height = 1500)
pheatmap(dd,
         # cellwidth = 45,
         # cellheight = 12,
         fontsize = 18,
         # border = 'white',
         cluster_rows = F,
         cluster_cols = F,
         # annotation_col = col_anno,
         annotation_row = col_anno,
         angle_col = "0",
         main = paste0(title, " pheatmap"))
dev.off()

result <- pheatmap(dd,
                   # cellwidth = 45,
                   # cellheight = 12,
                   fontsize = 18,
                   # border = 'white',
                   cluster_rows = T,
                   cluster_cols = T,
                   # annotation_col = col_anno,
                   annotation_row = col_anno,
                   angle_col = "0",
                   main = paste0(title, " pheatmap"))
col_oder=result$tree_col$order # 保存热图列顺序(序号)
row_oder=result$tree_row$order # 保存热图行顺序(序号)
cn_new <- colnames(dd)[col_oder] # 保存热图的列名
rn_new <- rownames(dd)[row_oder] # 保存热图的行名

## 生成两个新的与原来的总表长宽相同的数据框(暂时都填写0)
new_dd <- matrix(rep(0,ncol(dd)*nrow(dd)),nrow = nrow(dd),ncol = ncol(dd))
out <- matrix(rep(0,ncol(dd)*nrow(dd)),nrow = nrow(dd),ncol = ncol(dd))

## 将数据读入数据框new_dd,行顺序已经按照热图的顺序重排
for (i in 1:ncol(dd)){
  new_dd[,i]=dd[,i][row_oder]
}
## 将数据读入数据框out,列顺序已经进一步按照热图的顺序重排
for (i in 1:ncol(dd)){
  out[,i]= new_dd[,col_oder[ i ]]
}
# 将热图的行名和列名导入到排序后的表达量总表中
rownames(out)=rn_new
colnames(out)=cn_new

write.table(out,"twist大panel聚类.txt",sep="\t",quote = F) #输出重排后的表达量表

Seurat包中的DoHeatmap函数用于绘制,以可视化高维数据(如单细胞RNA测序数据)中的差异表达基因。以下是使用DoHeatmap作图的步骤: 1. **准备数据**:需要先运行Seurat流程,包括数据导入、标准化、缩放和查找差异基因等步骤。确保已经获得了一个包含差异基因的对象(例如top5)。 2. **基本绘**:使用DoHeatmap函数进行基础绘。示例代码如下: ```R DoHeatmap(sce2, features = top5$gene) ``` 3. **调整标签和颜色**:可以自定义的颜色和标签,以便更好地展示数据。示例代码如下: ```R DoHeatmap(sce2, features = top5$gene, cols = colorRampPalette(c("blue", "white", "red"))(50)) + NoLegend() ``` 4. **添加聚类信息**:通过设置`group.by`参数,可以按特定分组(如细胞类型)对进行聚类。示例代码如下: ```R DoHeatmap(sce2, features = top5$gene, group.by = "celltype") ``` 5. **高级定制**:可以使用`ComplexHeatmap`包进一步美化,包括添加注释、改变颜色方案等。示例代码如下: ```R library(ComplexHeatmap) heatmap <- DoHeatmap(sce2, features = top5$gene) heatmap <- ComplexHeatmap::Heatmap(heatmap, name = "Heatmap", col = colorRamp2(c("blue", "white", "red"))) heatmap[["columns"]][["column_title"]] <- "Gene Expression" draw(heatmap) ``` 6. **保存和导出**:可以将生成的保存为文件,方便后续查看和分享。示例代码如下: ```R pdf("heatmap.pdf", width = 10, height = 8) DoHeatmap(sce2, features = top5$gene) dev.off() ```
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值