【发布时间】:2019-01-10 21:24:28
【问题描述】:
我目前有一个频率数据框,想制作一张热图。我的热图不够深入,我不确定如何按行和按列对数据进行聚类。我还应该在我的代码中添加什么?
这里是一些示例数据,作为一个可靠的例子,我的 .txt 文件的前 6 行:
df <- matrix(c("cdr3aa", "Ana-Wk0-CD4", "Ana-Wk27-CD4", "Ana-Wk0-CD8", "Ana-Wk27-CD8", "nonshared", "shared",
"CASSLSPSTGNYGYTF", 1.12E-05, 0, 0.067313861, 0.049220624, 0.188215557, 0,
"CASCSRTSTDTQYF", 0, 3.19E-06, 0.065083991, 0.034558507, 0.105607859, 0,
"CASGGQG_GNQPQHF", 4.61E-04, 2.98E-04, 0, 0, 0.079950136, 0,
"CASRLRTGYDTEAFF", 7.50E-06, 6.38E-06, 0.057943843, 0.047042366, 0.073757427, 0,
"CAISEWDRAGELFF", 3.75E-06, 1.12E-05, 0.069951496, 0.060104224, 0.060978181, 0,
"CASSFPIREESSYNEQFF", 0, 0, 0.018718651, 0.015058722, 0.023803322, 0), ncol = 7, byrow = TRUE)
这是我目前所拥有的:
#Input of data
df <- read.table("TESTING.txt", header=TRUE, comment.char="", sep = "\t")
#Removing the first row
result <-df[-1]
#Setting the rownames as the CDR3 sequences
row.names(result) <- df$cdr3aa
#Making the HeatMap
dt2 <- result %>%
rownames_to_column() %>%
gather(colname, value, -rowname)
head(dt2)
ggplot(dt2, aes(x = colname, y = rowname, fill = value)) +
geom_tile()
这给了我一个像这样的热图:
现在,我正在尝试让我的热图更像这样:
如您所见,此热图包含我正在寻找的行聚类和我想要的配色方案。
我还猜测正确的热图是在对数刻度上完成的。第一张照片不是这样的,我很抱歉。我知道我已经接近我的目标,但我不确定如何继续获得最终结果。我想保留第一张图片的格式;我所要做的就是将“Sample ID”作为 x 标题,将“CDR3AA”作为 y 标题。对此的任何帮助将不胜感激。我还在学习 R,所以我愿意学任何东西。谢谢!
【问题讨论】:
-
在不知道它们是什么或代表什么的情况下帮助对字段进行聚类非常困难。此外,当您使用
geom_tile()时,您想要的结果使用层次聚类技术。 -
因此,这些列正在查看特定样本,这些样本可能是 CD4 T 细胞,也可能是 CD8 受体细胞。他们有 Wk0 或 Wk27,表示不同的时间点。共享和未共享正在查看另一个样本并查看它们之间共享/未共享的序列。 CDR3 正在查看氨基酸的序列。现在,每个频率都在告诉您每个样本中有多少序列。
-
我发现github.com/talgalili/heatmaply 对于使用树状图创建热图非常有用。
-
@RomanLuštrik 谢谢!我仍然坚持如何继续,我只是看不到下一步要采取的措施。 R 对我来说是新的,所以我仍在努力解决这个问题
-
@ArtemSokolov 谢谢。这与我所需要的很接近。我仍然不确定如何将所有内容更改为对数刻度,并为 NULL 添加灰色,对于低于某个截止值的那些。
标签: r ggplot2 plot heatmap genetics