简体   繁体   English

heatmap.2指定行顺序还是防止重新排序?

[英]heatmap.2 specify row order OR prevent reorder?

I'm trying to generate some plots of log-transformed fold-change data using heatmap.2 (code below). 我正在尝试使用heatmap.2生成一些对数转换的折叠变化数据图(下面的代码)。

I'd like to order the rows in the heatmap by the values in the last column (largest to smallest). 我想按照最后一列中的值(从大到小)对热图中的行进行排序。 The rows are being ordered automatically (I'm unsure the precise calculation used 'under the hood') and as shown in the image, there is some clustering being performed. 这些行是自动排序的(我不确定在引擎盖下使用的精确计算)并且如图所示,正在执行一些聚类。

sample_data 样本数据

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

code

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

Plot 情节

在此输入图像描述

I'm wondering if anyone can suggest either how to turn off reordering so I can reorder my matrix by the last column and force this order to be used, or alternatively hack the heatmap.2 function to do this. 我想知道是否有人可以建议如何关闭重新排序,以便我可以通过最后一列重新排序我的矩阵并强制使用此顺序,或者另外修改heatmap.2函数来执行此操作。

You are not specifying Rowv=FALSE and by default the rows are reordered (in heatmap.2 help, for parameter Rowv : 您没有指定Rowv=FALSE ,默认情况下会重新排序行(在heatmap.2帮助中,对于参数Rowv

determines if and how the row dendrogram should be reordered. 确定是否以及如何重新排序行树形图。 By default, it is TRUE, which implies dendrogram is computed and reordered based on row means. 默认情况下,它为TRUE,这意味着树形图是基于行平均值计算和重新排序的。 If NULL or FALSE, then no dendrogram is computed and no reordering is done. 如果为NULL或FALSE,则不计算树形图并且不进行重新排序。

So if you want to have the rows ordered according to the last columns, you can do : 因此,如果您希望根据最后一列排序行,您可以执行以下操作:

mat_data<-mat_data[order(mat_data[,ncol(mat_data)],decreasing=T),]

and then 然后

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)     

You will get the following image : 您将看到以下图像: 在此输入图像描述

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM