- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我有以下带有树状图的热图。
完整数据为here .
问题在于左侧的树状图被压扁了。如何在不改变热图列大小的情况下展开(展开)它?
它是用以下代码生成的:
#!/usr/bin/Rscript
library(gplots);
library(RColorBrewer);
plot_hclust <- function(inputfile,clust.height,type.order=c(),row.margins=70) {
# Read data
dat.bcd <- read.table(inputfile,na.strings=NA, sep="\t",header=TRUE);
rownames(dat.bcd) <- do.call(paste,c(dat.bcd[c("Probes","Gene.symbol")],sep=" "))
dat.bcd <- dat.bcd[,!names(dat.bcd) %in% c("Probes","Gene.symbol")]
dat.bcd <- dat.bcd
# Clustering and distance function
hclustfunc <- function(x) hclust(x, method="complete")
distfunc <- function(x) dist(x,method="maximum")
# Select based on FC, as long as any of them >= anylim
anylim <- 2.0
dat.bcd <- dat.bcd[ apply(dat.bcd, 1,function(x) any (x >= anylim)), ]
# Clustering functions
height <- clust.height;
# Define output file name
heatout <- paste("tmp.pafc.heat.",anylim,".h",height,".pdf",sep="");
# Compute distance and clusteirn function
d.bcd <- distfunc(dat.bcd)
fit.bcd <- hclustfunc(d.bcd)
# Cluster by height
#cutree and rect.huclust has to be used in tandem
clusters <- cutree(fit.bcd, h=height)
nofclust.height <- length(unique(as.vector(clusters)));
myorder <- colnames(dat.bcd);
if (length(type.order)>0) {
myorder <- type.order
}
# Define colors
#hmcols <- rev(brewer.pal(11,"Spectral"));
hmcols <- rev(redgreen(2750));
selcol <- colorRampPalette(brewer.pal(12,"Set3"))
selcol2 <- colorRampPalette(brewer.pal(9,"Set1"))
sdcol= selcol(5);
clustcol.height = selcol2(nofclust.height);
# Plot heatmap
pdf(file=heatout,width=20,height=50); # for FC.lim >=2
heatmap.2(as.matrix(dat.bcd[,myorder]),Colv=FALSE,density.info="none",lhei=c(0.1,4),dendrogram="row",scale="row",RowSideColors=clustcol.height[clusters],col=hmcols,trace="none", margin=c(30,row.margins), hclust=hclustfunc,distfun=distfunc,lwid=c(1.5,2.0),keysize=0.3);
dev.off();
}
#--------------------------------------------------
# ENd of functions
#--------------------------------------------------
plot_hclust("http://pastebin.com/raw.php?i=ZaGkPTGm",clust.height=3,row.margins=70);
最佳答案
在您的情况下,数据具有长尾,这对于基因表达数据(对数正态)来说是预期的。
data <- read.table(file='http://pastebin.com/raw.php?i=ZaGkPTGm',
header=TRUE, row.names=1)
mat <- as.matrix(data[,-1]) # -1 removes the first column containing gene symbols
从分位数分布可以看出,表达量最高的基因的范围从 1.5 扩展到 300 以上。
quantile(mat)
# 0% 25% 50% 75% 100%
# 0.000 0.769 1.079 1.544 346.230
当对未缩放数据执行分层聚类时,生成的树状图可能会显示出对具有最高表达的值的偏差,如您的示例所示。这值得进行对数或 z 分数转换( reference )。您的数据集包含 values == 0
,这是日志转换的问题,因为 log(0)
未定义。
Z 分数变换 ( reference ) 在 heatmap.2
中实现,但需要注意的是,该函数在计算距离矩阵并运行聚类算法之前缩放数据。因此,选项 scale='row'
不会影响聚类结果,请参阅我之前的文章 ( differences in heatmap/clustering defaults in R ) 了解更多详细信息。
我建议您在运行heatmap.2
之前缩放数据:
# scale function transforms columns by default hence the need for transposition.
z <- t(scale(t(mat)))
quantile(z)
# 0% 25% 50% 75% 100%
# -2.1843994 -0.6646909 -0.2239677 0.3440102 2.2640027
# set custom distance and clustering functions
hclustfunc <- function(x) hclust(x, method="complete")
distfunc <- function(x) dist(x,method="maximum")
# obtain the clusters
fit <- hclustfunc(distfunc(z))
clusters <- cutree(fit, 5)
# require(gplots)
pdf(file='heatmap.pdf', height=50, width=10)
heatmap.2(z, trace='none', dendrogram='row', Colv=F, scale='none',
hclust=hclustfunc, distfun=distfunc, col=greenred(256), symbreak=T,
margins=c(10,20), keysize=0.5, labRow=data$Gene.symbol,
lwid=c(1,0.05,1), lhei=c(0.03,1), lmat=rbind(c(5,0,4),c(3,1,2)),
RowSideColors=as.character(clusters))
dev.off()
另外,请参阅其他帖子 here和 here ,其中解释了如何通过 lmat
、lwid
和 lhei
参数设置热图布局。
生成的热图如下所示(省略行和列标签):
关于r - 如何扩展 heatmap.2 中的树状图,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21983162/
我正在使用 Java 类 HeatMap(作者: http://www.mbeckler.org/heatMap/ )为我的矩阵生成热图。我想实现一个鼠标监听器,当鼠标位于图像(热图)上的某个位置时,
我正在绘制热图,我不希望行名和列名在 x 轴和 y 轴上可见。 所以我使用了下面的代码: heatmap.2(data, xlab="PROTEINS", ylab="DRUGS", labRow=F
很抱歉,如果这个问题已在其他地方得到解答,但我无法找到解决方案...... 我有scatterplot数据、x和y以及颜色数据c(所有这些都是向量)。 x = rand(100,1); y = ran
我想从我的数据表中过滤掉 FTE 值为 0 的行,但前提是从我的热图中选择了一个框。如果未选择任何框,则数据表应显示 FTE 值为 0 的行。 我找到了这个:https://groups.google
我有一个制表符分隔的数据文本文件 (Data.txt),其中包含 13 列和 90 行。它有一个标题行(样本值),第一列是样本名称。 当我将数据加载到数据矩阵时,我的第一列样本名称没有显示。它们都被
我正在尝试在 Holoviews 中为每个点生成一个具有自定义颜色值的热图,以便指定不同的 alpha 颜色值。 目前我正在生成两个具有不同 alpha 值的 Holoviews 图并像这样叠加它们:
这个问题在这里已经有了答案: How to create pre-annotated rowside column in heatmap.2 (2 个回答) 4年前关闭。 我有以下 MWE,我在其中制
我正在尝试使用 heatmap.2 在一定范围内绘制值矩阵。列是范围(例如,0 到 100)。列标签太多,无法清晰显示。有没有办法显示每第 N 个(0、10、20 等)?我希望显示所有值,但我不希望它
我正在绘制一个 759*12 双矩阵 twoway.expr.005使用 heatmap.2() library(gplots) dist2 <- function(x, ...){as.dist(1
我有关于包裹的问题 gplots .我想使用功能heatmap.2因此我想将颜色键中的对称点从 0 更改为 1。通常在 symkey=TRUE 时然后您使用 col=redgreen() ,创建一个颜
我正在尝试将 heatmap.js 与 Google map 集成以进行一些可视化工作。我提到了这个: http://www.patrick-wied.at/static/heatmapjs/exam
我生成了这样的热图: X 轴和 Y 轴标签未完全显示。我的代码在这里: heatmap.2(x,col=blueyelred,colsep=c(1:6),rowsep=(1:62),
我有以下代码来显示热图上方的颜色键。但是颜色键在热图的顶部(稍微向右移动)并不精确。有谁知道如何使颜色不改变?另外,如何删除热图右侧的空白?谢谢。 library(gplots) heatmap.2(
有谁知道为什么我的 heatmap.2 结果有奇怪的颜色——绿松石不属于我的红/黑/绿调色板?绿松石似乎是指基于样本聚类的信息(我“错误”编辑出的行树状图),而不是基于特征聚类的信息。这是怎么回事?
我正在尝试使用 heatmap.2(下面的代码)生成一些对数转换的倍数变化数据图。 我想按照最后一列中的值(从大到小)对热图中的行进行排序。这些行正在自动排序(我不确定“幕后”使用的精确计算),如图所
我正在使用 github 中 pa7 的 heatmap.js 库成功制作一些热图 http://www.patrick-wied.at/static/heatmapjs/example-heatma
所以我需要在 seaborn 中创建大量具有不同数据尺度的热图。一些范围从 0-100 和一些 +100 到 -100。我需要做的是在所有图表中保持相同的颜色分级。因此,例如,我希望任何低于 0 的东
我正在为我的应用程序尝试热图,但我认为我的代码中缺少一些东西,因为它不起作用。 JSFiddle 下面是我的代码: var domElement = document.getE
首先,我正在使用 ReactJS 和 heatmap.js 库。 用作 heatmap.js 入口点的 HTMLDivElement 应该是响应式的。在每次调整窗口大小时,它都会根据当前窗口大小进行调
我有一个简单的传单热图示例,其中包含数据(超过 10,000 行)。但它没有产生应有的梯度热图。 演示在 http://shafiqmustapa.my/test.html heatmap没有根据va
我是一名优秀的程序员,十分优秀!