聚类热图的层级关系是固定的,但分支的左右镜像是可变的。如何让聚类结果更好的呈现我们想要的顺序呢?看下面的操作。

数据示例

exprTable <- read.table("exprTable.txt", sep="\t", row.names=1, header=T, check.names = F)
exprTable

测试时直接拷贝这个数据即可

##        Zygote 2_cell 4_cell 8_cell Morula  ICM
## Pou5f1    1.0    2.0    4.0    8.0   16.0 32.0
## Sox2      0.5    1.0    2.0    4.0    8.0 16.0
## Gata2     0.3    0.6    1.3    2.6    5.2 10.4
## cMyc     10.4    5.2    2.6    1.3    0.6  0.3
## Tet1     16.0    8.0    4.0    2.0    1.0  0.5
## Tet3     32.0   16.0    8.0    4.0    2.0  1.0

绘制一个聚类热图很简单

library(pheatmap)
pheatmap(exprTable)

如何自定义分支顺序呢

自己做个hclust传进去,顺序跟pheatmap默认是一样的

exprTable_t <- as.data.frame(t(exprTable))col_dist = dist(exprTable_t)hclust_1 <- hclust(col_dist)pheatmap(exprTable, cluster_cols = hclust_1)

人为指定顺序排序样品

按发育时间排序样品

manual_order = c("Zygote", "2_cell", "4_cell", "8_cell", "Morula",  "ICM")dend = reorder(as.dendrogram(hclust_1), wts=order(match(manual_order, rownames(exprTable_t))))# 默认为mean,无效时使用其他函数尝试
# dend = reorder(as.dendrogram(hclust_1), wts=order(match(manual_order, rownames(exprTable_t))), agglo.FUN = max)col_cluster <- as.hclust(dend)pheatmap(exprTable, cluster_cols = col_cluster)

按某个基因的表达由小到大排序

可以按任意指标排序,基因表达是一个例子。

dend = reorder(as.dendrogram(hclust_1), wts=exprTable_t$Tet3)col_cluster <- as.hclust(dend)pheatmap(exprTable, cluster_cols = col_cluster)

按某个基因的表达由大到小排序

dend = reorder(as.dendrogram(hclust_1), wts=exprTable_t$Tet3*(-1))col_cluster <- as.hclust(dend)pheatmap(exprTable, cluster_cols = col_cluster)

按分支名字(样品名字)的字母顺序排序

library(dendextend)
col_cluster <- hclust_1 %>% as.dendrogram %>% sort %>% as.hclust
pheatmap(exprTable, cluster_cols = col_cluster)

梯子形排序:最小的分支在右侧

col_cluster <- hclust_1 %>% as.dendrogram %>% ladderize(TRUE) %>% as.hclust
pheatmap(exprTable, cluster_cols = col_cluster)

梯子形排序:最小的分支在左侧

col_cluster <- hclust_1 %>% as.dendrogram %>% ladderize(FALSE) %>% as.hclust
pheatmap(exprTable, cluster_cols = col_cluster)

按特征值排序

样本量多时的自动较忧排序

sv = svd(exprTable)$v[,1]
dend = reorder(as.dendrogram(hclust_1), wts=sv)
col_cluster <- as.hclust(dend)pheatmap(exprTable, cluster_cols = col_cluster)

猜你喜欢

10000+:菌群分析 宝宝与猫狗 梅毒狂想曲 提DNA发Nature Cell专刊 肠道指挥大脑

系列教程:微生物组入门 Biostar 微生物组  宏基因组

专业技能:学术图表 高分文章 生信宝典 不可或缺的人

一文读懂:宏基因组 寄生虫益处 进化树

必备技能:提问 搜索  Endnote

文献阅读 热心肠 SemanticScholar Geenmedical

扩增子分析:图表解读 分析流程 统计绘图

16S功能预测   PICRUSt  FAPROTAX  Bugbase Tax4Fun

在线工具:16S预测培养基 生信绘图

科研经验:云笔记  云协作 公众号

编程模板: Shell  R Perl

生物科普:  肠道细菌 人体上的生命 生命大跃进  细胞暗战 人体奥秘

写在后面

为鼓励读者交流、快速解决科研困难,我们建立了“宏基因组”专业讨论群,目前己有国内外5000+ 一线科研人员加入。参与讨论,获得专业解答,欢迎分享此文至朋友圈,并扫码加主编好友带你入群,务必备注“姓名-单位-研究方向-职称/年级”。PI请明示身份,另有海内外微生物相关PI群供大佬合作交流。技术问题寻求帮助,首先阅读《如何优雅的提问》学习解决问题思路,仍未解决群内讨论,问题不私聊,帮助同行。

学习16S扩增子、宏基因组科研思路和分析实战,关注“宏基因组”

点击阅读原文,跳转最新文章目录阅读

聚类热图怎么按自己的意愿调整分支的顺序?相关推荐

  1. 无代码调整聚类热图分支顺序

    聚类热图根据不同的聚类算法和距离计算方式,获得的热图分支结构会有一些不同.有时,我们也希望能在不改变分支结构的基础上,对热图分支的顺序进行一些调整,这就是推文聚类热图怎么按自己的意愿调整分支的顺序?的 ...

  2. R 生信数据可视化(聚类热图)

    一.准备示例数据 下载:链接:https://pan.baidu.com/s/1_b8swSkWDqIHZi6UwKaspA 提取码:pll7 文件说明 示例数据,其中数据均为虚拟数据,与实际生物学过 ...

  3. 怎么让热图显示基因名_R 生信数据可视化 01 | 聚类热图

    一. 示例数据准备 下载:链接:https://pan.baidu.com/s/1_b8swSkWDqIHZi6UwKaspA 提取码:pll7 文件说明 示例数据,其中数据均为虚拟数据,与实际生物学 ...

  4. 聚类热图分类注释_Python可视化matplotlibamp;seborn15-聚类热图clustermap(建议收藏)...

    聚类热图可以简单理解为:使用距离算法将距离相近的东西成簇聚为一类. 本篇使用python中seaborn.clustermap绘制聚类热图(clustermap). 本文将了解到什么? 欢迎随缘关注@ ...

  5. RNA-seq结果图片如何解读(火山图、韦恩图、聚类热图和折线图)

    在RNA-seq项目中,常见的结果包括:火山图.韦恩图.聚类热图.log2(ratios)折线图.有向无环图.散点图.代谢通路图.蛋白互作图等.今天我们先来一起学习火山图.韦恩图.聚类热图和折线图的解 ...

  6. 【R语言】——pheatmap包绘制聚类热图1(保姆级教程)

    一.前言 1 热图介绍 通常,热图是对所获得的数据或其他因素进行归一化处理后,用颜色的变化来直观表示不同样本间的变化情况.本质上其是由一个个用预设颜色表示数值大小的小方格组成的数据矩阵,并通过对因子或 ...

  7. r语言热图对列不进行聚类_R语言 Pheatmap 画非聚类 热图

    python pandas 加 R Pheatmap 画非聚类热图 最近需求一个需求图 f9cb530a4fb553c2f42fd8f157cd451.png 上面的annotation部分用作临床注 ...

  8. matlab画动态聚类图,聚类热图,你用什么软件画?

    原标题:聚类热图,你用什么软件画? 聚类热图是我们展示芯片.或者测序结果比较常用的方式,在文章中出现的频率非常高,一般来说,这张图的每行对应一个基因,每列对应一个样本,行和列形成的是基因数*样本数的表 ...

  9. 【R语言】——聚类热图行列分组信息注释热图2

    上一期"[R语言]--聚类热图绘制(pheatmap)"介绍了R语言pheatmap包绘制聚类热图的基础代码,本期介绍当需要同时在热图上显示分组情况时,可利用pheatmap包构建 ...

最新文章

  1. websocket如何区分用户_WebSocket与普通Socket的差异
  2. [YTU]_1032( 统计出其中英文字母、数字、空格和其他字符的个数)
  3. Flex中的Base64加解密
  4. internetreadfile读取数据长度为0_Go发起HTTP2.0请求流程分析(后篇)——标头压缩
  5. 服务器串口协议,基于TCPIP协议串口通信服务器设计说明.docx
  6. 高通android logo,高通平台android kernel 开机logo展示和传统linux一样
  7. Java人事面试100问
  8. FC1179U盘量产教程
  9. 6个适合成年人的自学网站,每天半小时改变你一生
  10. 微信开放平台开发者认证
  11. 计算机毕业设计(附源码)python游泳馆管理系统
  12. vue qrcodejs2生成二维码实现手机APP扫码进行web网页登录
  13. 计算机病毒知识及防护课件,计算机病毒和预防ppt课件
  14. 混合像元分解研究综述——线性混合像元分解算法
  15. [Rust GUI]fltk-rs的helloworld
  16. java 自动发货_基础知识总结篇(一)
  17. python画正方体_python的matplotlib的3种正方体的画法及代码分析
  18. 软件测试的薪资到底有多高?5分钟看明白你和年薪30W+软件工程师的差距
  19. [转] 为UIWebView实现离线浏览
  20. CTO:这代码注释让我笑T了。。。

热门文章

  1. 适用于任何数据可视化需求的国外10个最佳JavaScript图表库
  2. 惊!史上最全的select加锁分析(Mysql)
  3. Scrum Mastery:产品开发中如何优化产品价值?
  4. 分享6款堪称神器却很少有人知道的软件,让人惊喜!
  5. 企业管理难题:团队协作
  6. Scrum敏捷开发工具Leangoo-卡片多选
  7. 用表格落地OKR吗,OKR表格如何制定?
  8. Excel实用小技巧
  9. 分布式存储系统考虑因素-一致性
  10. java获得单元格的值_java – 从单元格值Apache POI获取单元格索引