R - 在热图上添加彩色侧边栏

时间:2014-05-08 01:39:41

标签: r heatmap

我有几个问题R. 我试图用行和col树形图绘制热图,直到这里一切都好。现在我想使用ColSideColors添加侧栏。颜色取决于蛋白质'我将这些数据放在一个称为域的不同载体中,包含蛋白质的名称和与域相关的颜色。我已经检查过,每个域都有颜色,一切都很好。 但是当我将侧栏添加到绘图中时,似乎颜色的顺序不正确。我怎样才能解决这个问题 ? 请在下面找到代码:

domains <- read.table("pubchem_proteins_domains.csv", sep = ",", dec  = ".", quote = "\"")
domains$values  <- (domains$V2 - min(domains$V2))/(max(domains$V2) - min(domains$V2))
domains$gray <- gray(domains$values)

head(domains)

                                                                             V1
1           P10275.ANDR_HUMAN.Androgen.receptor.OS.Homo.sapiens.GN.AR.PE.1.SV.2
2       P00915.CAH1_HUMAN.Carbonic.anhydrase.1.OS.Homo.sapiens.GN.CA1.PE.1.SV.2
3       P00918.CAH2_HUMAN.Carbonic.anhydrase.2.OS.Homo.sapiens.GN.CA2.PE.1.SV.2
4       P22748.CAH4_HUMAN.Carbonic.anhydrase.4.OS.Homo.sapiens.GN.CA4.PE.1.SV.2
5    P21554.CNR1_HUMAN.Cannabinoid.receptor.1.OS.Homo.sapiens.GN.CNR1.PE.1.SV.1
6 P24941.CDK2_HUMAN.Cyclin-dependent.kinase.2.OS.Homo.sapiens.GN.CDK2.PE.1.SV.2
  V2 values    gray
1 16   0.60 #999999
2  7   0.24 #3D3D3D
3  7   0.24 #3D3D3D
4  7   0.24 #3D3D3D
5  2   0.04 #0A0A0A
6 22   0.84 #D6D6D6

mol_distances <- read.table("pubchem_molecular_distances.csv", header = T, sep = ",")
row.names(mol_distances) <- mol_distances[,1]
mol_distances <- mol_distances[,-c(1)]

alignment <- read.alignment(file = "pubchem_alignment.txt", format = "clustal")
prot_distances <- dist.alignment(alignment)

hc_mol <- hclust(as.dist(mol_distances), method="ward")
hc_prot <- hclust(as.dist(prot_distances), method="ward")

heatmap.2(dat_mat, 
Rowv = as.dendrogram(hc_prot), 
Colv = as.dendrogram(hc_mol), 
RowSideColors=domains$gray[domains$proteins_name],
dendrogram = "both",
scale = "none",
margins = c(12,24),
key = TRUE,
keysize = 1.0,
col = rainbow(512, start = 1, end = 0.4), 
density.info="density", 
denscol = "black",
xlab="Compounds", 
ylab="Targets", main="X Activity Profile",
trace ="none")

除此之外,我找不到另外一个功能来在R中为颜色做类似的事情,我可以用彩虹做同样的事情吗?

谢谢 问候 氘

1 个答案:

答案 0 :(得分:0)

好吧,我解决了我的问题,似乎我的数据集中有几个问题,这意味着R脚本是正确的。 现在颜色分配给正确的蛋白质。 但我还是不知道是否可以使用其他颜色而不是灰色来做类似的侧边栏,以使其更清晰。

谢谢 氘