[英]heatmap.2 specify row order OR prevent reorder?
我正在尝试使用heatmap.2生成一些对数转换的折叠变化数据图(下面的代码)。
我想按照最后一列中的值(从大到小)对热图中的行进行排序。 这些行是自动排序的(我不确定在引擎盖下使用的精确计算)并且如图所示,正在执行一些聚类。
样本数据
gid 2hrs 4hrs 6hrs 8hrs
1234 0.5 0.75 0.9 2
2234 0 0 1.5 2
3234 -0.5 0.1 1 3
4234 -0.2 -0.2 0.4 2
5234 -0.5 1.2 1 -0.5
6234 -0.5 1.3 2 -0.3
7234 1 1.2 0.5 2
8234 -1.3 -0.2 2 1.2
9234 0.2 0.2 0.2 1
0123 0.2 0.2 3 0.5
码
data <- read.csv(infile, sep='\t',comment.char="#")
rnames <- data[,1] # assign labels in column 1 to "rnames"
mat_data <- data.matrix(data[,2:ncol(data)]) # transform columns into a matrix
rownames(mat_data) <- rnames # assign row names
# custom palette
my_palette <- colorRampPalette(c("turquoise", "yellow", "red"))(n = 299)
# (optional) defines the color breaks manually for a "skewed" color transition
col_breaks = c(seq(-4,-1,length=100), # for red
seq(-1,1,length=100), # for yellow
seq(1,4,length=100)) # for green
# plot data
heatmap.2(mat_data,
density.info="none", # turns off density plot inside color legend
trace="none", # turns off trace lines inside the heat map
margins =c(12,9), # widens margins around plot
col=my_palette, # use on color palette defined earlier
breaks=col_breaks, # enable color transition at specified limits
dendrogram='none', # only draw a row dendrogram
Colv=FALSE) # turn off column clustering
情节
我想知道是否有人可以建议如何关闭重新排序,以便我可以通过最后一列重新排序我的矩阵并强制使用此顺序,或者另外修改heatmap.2函数来执行此操作。
您没有指定Rowv=FALSE
,默认情况下会重新排序行(在heatmap.2
帮助中,对于参数Rowv
:
确定是否以及如何重新排序行树形图。 默认情况下,它为TRUE,这意味着树形图是基于行平均值计算和重新排序的。 如果为NULL或FALSE,则不计算树形图并且不进行重新排序。
因此,如果您希望根据最后一列排序行,您可以执行以下操作:
mat_data<-mat_data[order(mat_data[,ncol(mat_data)],decreasing=T),]
然后
heatmap.2(mat_data,
density.info="none",
trace="none",
margins =c(12,9),
col=my_palette,
breaks=col_breaks,
dendrogram='none',
Rowv=FALSE,
Colv=FALSE)
您将看到以下图像:
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.