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

news/2024/5/20 9:13:30 标签: r语言, 聚类, 开发语言

代码

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

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) #输出重排后的表达量表


http://www.niftyadmin.cn/n/411604.html

相关文章

linux下启动Java程序和杀死java进程shell脚本

先杀死java进程然后启动java程序 如果没有java进程&#xff0c;就直接启动。有java进程就杀死java进程然后重新启动 使用 vim start.sh命令创建脚本文件&#xff0c;并在文件中写入如下内容&#xff1a; #!/bin/sh APP_NAME$1.jar LOG_NAME$1.log ps -ef | grep $APP_NAME | …

免费升级到 iOS 17 Developer Beta:官方Apple Store升级方案与爱思助手方法比较

&#x1f337;&#x1f341; 博主 libin9iOak带您 Go to New World.✨&#x1f341; &#x1f984; 个人主页——libin9iOak的博客&#x1f390; &#x1f433; 《面试题大全》 文章图文并茂&#x1f995;生动形象&#x1f996;简单易学&#xff01;欢迎大家来踩踩~&#x1f33…

Spring6源码编译、安装

环境准备 名称版本jdk17gradle8.1.1spring源码版本6.0.9 安装JDK 下载并解压 配置环境变量 JAVA_HOME D:\\Develop\\Zulu\\zulu-17 CLASSPATH .;%JAVA_HOME%\lib; PATH %JAVA_HOME%\bin验证 java -version安装Gradle 下载并解压 配置环境变量 GRADLE_HOME D:…

基于STL的 演讲比赛流程管理系统

目录 一、演讲比赛程序要求 1、比赛规则 2、程序功能 二、创建管理类 三、菜单功能 四、退出功能 五、演讲比赛功能 1、功能分析 2、创建选手类 3、进行比赛 4、保存分数 六、查看比赛记录 1、读取记录分数 2、查看记录功能 3、bug解决 七、清空功能 一、演讲比赛…

查看python库下函数的具体实现

文章目录 前言一、简单查询函数的介绍1.1 利用pycharm查询1.2 利用cmd查询 二、查询函数的具体实现 前言 根据需要我们查询函数可以做到粗查询&#xff0c;即只要该函数如何使用&#xff0c;另外一种查询方式为细查询&#xff0c;即知道该函数怎么实现的。 一、简单查询函数的…

Ingress Controller高可用部署

Ingress-controller 高可用解说 Ingress Controller 是集群流量的接入层&#xff0c;对它做高可用非常重要&#xff0c;可以基于 keepalive 实现 nginx-ingress-controller 高可用&#xff0c;具体实现如下&#xff1a; Ingress-controller 根据 Deployment nodeSeletorpod 反…

【Linux】Nginx编译安装及系统服务添加

提示&#xff1a;文章写完后&#xff0c;目录可以自动生成&#xff0c;如何生成可参考右边的帮助文档 Nginx 一、关于 NginxNginx和Apache的差异Apache的优势Nginx的优势 二. 编译安装Nginx服务1.关闭防火墙2.安装依赖包3.创建运行用户、组4.编译安装Nginx5.检查、启动、重启、…

Docker Registry部署

之前执行 docker pull的命令都是从 docker hub上拉取的&#xff0c;是docker 公共仓库&#xff0c;如果在公司中使用docker&#xff0c;我们不可能把自己的镜像上传到公共仓库&#xff0c;这个时候就需要一个自己的仓库&#xff08;私有仓库&#xff09;&#xff0c;在局域网之…