У меня в настоящее время есть кадр данных частот, и я хотел бы сделать тепловую карту. Имеющаяся у меня тепловая карта недостаточно глубока, и я не уверен, как кластеризовать данные по строкам и столбцам. Что еще мне добавить в мой код?
Вот некоторые примеры данных, чтобы привести пример 6 первых строк моего файла .txt:
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, поэтому все, что есть для изучения, я хочу изучать. Thx!