如何使用固定的外部分层集群创建热图

2023-11-22

我有一个矩阵数据,想用热图将其可视化。这些行是物种,所以我想可视化行旁边的系统发育树,并根据树对热图的行重新排序。我知道heatmapR 中的函数可以创建层次聚类热图,但如何使用我的系统发育聚类而不是图中默认创建的距离聚类?


首先你需要使用包ape将您的数据读入phylo object.

library(ape)
dat <- read.tree(file="your/newick/file")
#or
dat <- read.tree(text="((A:4.2,B:4.2):3.1,C:7.3);")

仅当您的树是超测量树时,以下方法才有效。

下一步是将您的系统发育树转变为类dendrogram.

这是一个例子:

data(bird.orders) #This is already a phylo object
hc <- as.hclust(bird.orders) #Compulsory step as as.dendrogram doesn't have a method for phylo objects.
dend <- as.dendrogram(hc)
plot(dend, horiz=TRUE)

Plot of a phylogenetic tree, using plot.dendrogram

mat <- matrix(rnorm(23*23),nrow=23, dimnames=list(sample(bird.orders$tip, 23), sample(bird.orders$tip, 23))) #Some random data to plot

首先,我们需要根据系统发育树中的顺序对矩阵进行排序:

ord.mat <- mat[bird.orders$tip,bird.orders$tip]

然后将其输入到heatmap:

heatmap(ord.mat, Rowv=dend, Colv=dend)

Heatmap with two-way phylogenetic tree indexing

Edit:这是一个处理超度量和非超度量树的函数。

heatmap.phylo <- function(x, Rowp, Colp, ...){
    # x numeric matrix
    # Rowp: phylogenetic tree (class phylo) to be used in rows
    # Colp: phylogenetic tree (class phylo) to be used in columns
    # ... additional arguments to be passed to image function
    x <- x[Rowp$tip, Colp$tip]
    xl <- c(0.5, ncol(x)+0.5)
    yl <- c(0.5, nrow(x)+0.5)
    layout(matrix(c(0,1,0,2,3,4,0,5,0),nrow=3, byrow=TRUE),
                  width=c(1,3,1), height=c(1,3,1))
    par(mar=rep(0,4))
    plot(Colp, direction="downwards", show.tip.label=FALSE,
               xlab="",ylab="", xaxs="i", x.lim=xl)
    par(mar=rep(0,4))
    plot(Rowp, direction="rightwards", show.tip.label=FALSE, 
               xlab="",ylab="", yaxs="i", y.lim=yl)
    par(mar=rep(0,4), xpd=TRUE)
    image((1:nrow(x))-0.5, (1:ncol(x))-0.5, x, 
           xaxs="i", yaxs="i", axes=FALSE, xlab="",ylab="", ...)
    par(mar=rep(0,4))
    plot(NA, axes=FALSE, ylab="", xlab="", yaxs="i", xlim=c(0,2), ylim=yl)
    text(rep(0,nrow(x)),1:nrow(x),Rowp$tip, pos=4)
    par(mar=rep(0,4))
    plot(NA, axes=FALSE, ylab="", xlab="", xaxs="i", ylim=c(0,2), xlim=xl)
    text(1:ncol(x),rep(2,ncol(x)),Colp$tip, srt=90, pos=2)
    }

这是之前的(超测量)示例:

heatmap.phylo(mat, bird.orders, bird.orders)

Heatmap with ultrametric phylogenies as index

以及非超测量:

cat("owls(((Strix_aluco:4.2,Asio_otus:4.2):3.1,Athene_noctua:7.3):6.3,Tyto_alba:13.5);",
    file = "ex.tre", sep = "\n")
tree.owls <- read.tree("ex.tre")
mat2 <- matrix(rnorm(4*4),nrow=4, 
             dimnames=list(sample(tree.owls$tip,4),sample(tree.owls$tip,4)))
is.ultrametric(tree.owls)
[1] FALSE
heatmap.phylo(mat2,tree.owls,tree.owls)

Heatmap with non-ultrametric phylogenies as index

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

如何使用固定的外部分层集群创建热图 的相关文章

  • 长变量名在 dplyr 中失败

    长度超过 39 个字符的字符串在 dplyr 中失败 返回错误 错误 索引超出范围 我错过了什么还是这是一个错误 40 个字符不起作用 library dplyr names iris 5 lt vvv 5vvv10vvv15vvv20vv
  • 从网络源获取 R 中的数据作为数据框

    我正在尝试使用 RCurl 包将一些空气污染背景数据作为 data frame 直接加载到 R 中 该网站有 3 个下拉框 用于在下载 csv 文件之前选择选项 如下图所示 我试图从下拉框中选择 3 个值 并使用 下载 CSV 按钮将数据作
  • dplyr 中的 Summarize 是否可以不删除数据框中的其他列?

    我有一个包含三列的数据框 我正在尝试进行简单的总结以查找数据框中每个城市的最高温度 但同时保留每个最高温度列出的日期 这是数据框 我们称之为 maxT new ID Date Max TemperatureF 1 TUS 1960 04 0
  • 将 JSON URL 转换为 R 数据帧

    我在将 JSON 文件 从 API 转换为 R 中的数据帧时遇到问题 例如 URL 我尝试了 S O 的一些不同建议 包括将json数据转换为R中的数据框 https stackoverflow com questions 28683769
  • R-了解 akima::interp 结果中的 NA 值

    我有以下数据框 ref dat k Intensity Slope 1 0 021467214 33 16 2 0 012444759 33 8 3 0 006079156 33 4 4 0 003792025 33 2 5 0 02276
  • 在函数内部调用 clusterApply 时,性能会下降

    我遇到了一个奇怪的问题clusterApply 我已经能够尽可能地隔离它 如下所示 首先 我从全局环境运行以下代码 require parallel cl lt makeCluster rep localhost 20 SOCK xl lt
  • 如何更新条件公式?

    让我直接进入示例 考虑以下等式 frml lt formula y a b x z 使用这样的公式规范 例如和AER ivreg 我想更新这个公式 使其显示为 frml2 lt y a b c x z w 但是 我不确定如何更新条件标志之前
  • 查找数据帧列表中同一列中的所有重复值并将其转换为 NULL

    我有一个清单BELGIAN COAST list包含数百个数据帧 df1 df2 15 列 X 1000 行 每个数据帧的最后一列称为Chemicals并包含一些字符 例如Sulfate or Ammonia 但是这一列有很多行Chemic
  • 使用 dplyr:group_by 将数据帧分成多个子集?

    有没有办法根据 group by 组使用 dplyr 将一个数据帧拆分为数据帧的子集 mtcars gt group by cyl gear gt codes 非常感谢 好吧 并不是你真的想要 但你可以这样做tidyr 即nearly一样的
  • R 中的发散积分可在 Wolfram 中求解

    我知道我以前问过同样的问题 但由于我是新来的 这个问题问得不好而且不可重现 因此我在这里尝试做得更好 如果我只编辑旧的 可能没有人会读它 我有一个想要积分的二重积分 ff lt function g t exp 16 g exp 8 t t
  • 在 R 中绘制对数正态概率密度

    我正在尝试在 R 中生成对数正态概率密度图 其中包含 3 个不同的均值对数和标准差对数 我尝试了以下方法 但我的图表太丑了 看起来一点也不好看 x lt seq 0 10 length 100 a lt dlnorm x meanlog 0
  • 比较 R 中的两个字符向量

    我有两个 ID 字符向量 我想比较这两个字符向量 特别是我对以下数字感兴趣 A和B各有多少个ID 有多少个ID在A中但不在B中 有多少个ID在B但不在A 我还想画维恩图 以下是一些可以尝试的基础知识 gt A c Dog Cat Mouse
  • 为绘图制作 2D 图例 - 双变量分区统计图

    我一直在玩双变量 choropleth 地图 并且一直在如何创建类似于 2d 图例的问题上陷入困境约书亚 史蒂文斯 http www joshuastevens net cartography make a bivariate chorop
  • R 中的字符串作为函数参数

    数据框chocolates列出了糖果的类型以及每种糖果的一组评级 ID sweetness filling crash snickers 0 67 0 55 0 40 milky way 0 81 0 53 0 56 我正在编写一个函数 它
  • 有没有一种简单的方法来判断存储在一个列表中的许多数据帧是否包含相同的列?

    我有一个包含许多数据框的列表 df1 lt data frame A 1 5 B 2 6 C LETTERS 1 5 df2 lt data frame A 1 5 B 2 6 C LETTERS 1 5 df3 lt data frame
  • 带 R 的多彩标题

    我想添加颜色某些词在我的图表标题中 我已经能够在这里找到一些先例 http blog revolutionanalytics com 2009 01 multicolor text in r html 具体来说 我希望用撇号括起来的文本 在
  • R - 通过覆盖和递归合并列表

    假设我有两个带有名字的列表 a list a 1 b 2 c list d 1 e 2 d list a 1 b 2 b list a 2 c list e 1 f 2 d 3 e 2 我想递归地合并这些列表 如果第二个参数包含冲突的值 则
  • ggplot2、R 中的单条形条形图

    我有以下数据和代码 gt ddf var1 var2 1 aa 73 2 bb 18 3 cc 9 gt gt dput ddf structure list var1 c aa bb cc var2 c 73L 18L 9L Names
  • GGPLOT2:如何在 ggplot() 脚本中绘制特定选择

    这是一个名为的大型数据集的峰值P 其中有 10 个优惠 CS 有不同的商店 SHP 具有多个数值 数据集列出了按周排序的它们 WK 2 tm 52 它创建一个大文件 仅前 6 行出现峰值 WK MND CS SHP RevCY RevLY
  • 替换字符串/文本中“从第 n 次到最后一次”出现的单词

    这个问题以前曾被问过 但尚未得到令提问者满意的答案 https stackoverflow com questions 36368712 how to use stringrs replace all function to replace

随机推荐

  • Hibernate5 HHH000181:没有遇到适当的连接提供程序,假设应用程序将提供连接

    我实际上还没有编写任何代码 我只是想运行mvn hibernate5 ddl gen ddl将现有类转换为 DDL 什么可能导致警告ConnectionProviderInitiator HHH000181 没有遇到适当的连接提供程序 假设
  • 为什么 Firefox 有时会缓存我的 CSS 和 Javascript 代码,即使它已更改?

    在我的产品网站上 Firefox 有时 无法检测 我的 CSS 和 Javascript 代码中的更改 相反 它加载旧版本 所以看来我需要清除缓存 遇到这样的情况 我该怎么办 这与最新的 Firefox 撰写本文时为 16 0 1 有关 E
  • 如何通过 Cmake 构建系统使用目录中的所有 *.c 文件?

    我想找到一个目录下的所有 c文件并将它们全部添加到src文件中以在cmake中编译 我如何在 CMakeList txt 中执行此操作 对于常规 makefile 我可以创建 SPECIFIED SRC FILE foreach d SPE
  • 通过内联数据属性传递 Javascript 函数

    我正在使用 Javascript 文件上传库 它的功能之一是它使用 HTML5 内联数据属性将信息传递给插件 这对于任何与数据相关的字符串 数字等都非常有用 但是该插件有一些您可以为其分配函数的回调方法 我的问题是 当尝试通过这些内联数据属
  • 如何向极坐标图(玫瑰图)添加颜色条?

    In 这个例子颜色与每个条形的半径相关 如何向该图添加颜色条 我的代码模仿 玫瑰图 投影 它本质上是极坐标投影上的条形图 这是其中的一部分 angle radians 10 patches radians 360 angle theta n
  • JSP 或 JavaScript 相当于 PHP 的 $_SERVER["HTTP_HOST"]?

    我在 JavaScript 中使用了绝对 URL 并为 window location 进行了硬编码 我不想每次测试我的应用程序时都必须更改此设置 在 PHP 中 我会通过测试 SERVER HTTP HOST 变量来找出我所在的服务器 并
  • Google App Engine“没有名为 pwd 的模块”

    我能够很好地运行我的 Google App Engine 项目 我使用 Python Flask 来开发 Web 应用程序 但是当我将系统从 Ubuntu 12 04 升级到 14 04 时 App Engine 项目在本地系统上变得无响应
  • 抽象如何帮助隐藏 Java 中的实现细节?

    抽象是隐藏实现细节并仅向用户显示功能的过程 另一种方式是 它只向用户显示重要的内容并隐藏内部细节 下面是一个创建抽象类并重写抽象方法的示例 但我不明白的是它是如何隐藏实现细节的 abstract class Bank abstract in
  • iPhone:检测 UIImageView 图像序列动画结束的最佳方法

    我们知道UIImageView对图像序列动画有很好的支持 我们可以轻松创建 UIImage 对象的数组 设置animationImages属性 配置动画持续时间 重复计数等 然后直接触发 但似乎没有办法知道这个动画什么时候结束 假设我有十张
  • VS2013调试时的身份验证问题-iis express

    我试图在 Visual Studio 2013 中调试时获取 Windows 用户名 我只是使用 httpcontext current user identity name 如果我在我的开发服务器上运行它 它可以正常工作 如果我在任何以前
  • htaccess 中的子域重定向[关闭]

    Closed 这个问题是无关 目前不接受答案 我想知道使用 htaccess 规则是否可以实现以下场景 我希望将一个子域重定向到另一个网址 我已联系服务器管理员将 test 子域添加到 example com 域 主域没有其他子域 我必须在
  • 自定义视图,使用不同的子视图对角分割布局

    我怎样才能分开LinearLayout or RelativeLayout对角线分成两个不同的尺寸 每个都有不同的子视图 例子ViewPager在上半部分和不同的LinearLayout在底部 像这样的东西 我怎样才能做到这一点 请帮忙 最
  • Twitter Bootstrap 3 Typeahead / Tagsinput 完成两次

    编辑 添加工作 JSFiddle 我正在使用 Twitter Bootstrap TagsInput 和 Bootstrap Typeahead 我的源是一个 json 文件 但这无关紧要 我已经检查了静态源 预输入和标签输入正在工作 但是
  • git-svn clone 或 svn2git 意外停止

    我正在尝试使用以下命令从 git 迁移到 svn git svn clone stdlayout https my sourcecontrol 或使用 git2svn svn2git notags https sourcecontrol v
  • .Net 应用程序可以转换为便携式应用程序,即单个 .exe

    Net 应用程序可以转换为单个 exe 可移植应用程序吗 即没有安装程序 它只是运行 我想所有的 dll 资源等都需要嵌入到 exe 中吗 如果是这样 我该怎么做 Thanks 你可以使用ILMerge将所有程序集合并为一个可执行文件 但您
  • MySQL:获取特定行的行号(排名)

    我有一个users具有名为的列的表money sent 我想通过以下方式订购这张桌子money sent按降序排列 然后找出特定用户的 排名 例如 只有 111 人比用户 12392 花费的钱更多 因此他们的排名为 112 我该如何查询这个
  • URL 嵌入凭证

    维基百科说HTTP 基本身份验证依赖于Authorization用于从客户端向服务器提供凭据的标头 但也可以将凭据嵌入 URL 中 http s
  • 找不到模块“express”(带有 docker 的节点应用程序)

    我是 Docker 新手 我正在尝试从 NodeJS 开始 所以这是我的问题 我的项目中有这个 Dockerfile FROM node argon Create app directory RUN mkdir p home Documen
  • 如何设置LIBSVM Matlab界面?

    我在 MATLAB 中实现 LibSVM 时遇到问题 我正在使用 MATLAB R2009a 我也有最新版本 R2012b 但我不使用那个 我将 LibSVM 包 libsvm 3 14 下载到我的 Windows 7 PC 上 其中 MA
  • 如何使用固定的外部分层集群创建热图

    我有一个矩阵数据 想用热图将其可视化 这些行是物种 所以我想可视化行旁边的系统发育树 并根据树对热图的行重新排序 我知道heatmapR 中的函数可以创建层次聚类热图 但如何使用我的系统发育聚类而不是图中默认创建的距离聚类 首先你需要使用包