Создание тепловой карты журнала с помощью ggplot2 - PullRequest
0 голосов
/ 11 января 2019

У меня в настоящее время есть кадр данных частот, и я хотел бы сделать тепловую карту. Имеющаяся у меня тепловая карта недостаточно глубока, и я не уверен, как кластеризовать данные по строкам и столбцам. Что еще мне добавить в мой код?

Вот некоторые примеры данных, чтобы привести пример 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()

Это дает мне тепловую карту примерно так: Heat Map the is given

Теперь я пытаюсь сделать мою тепловую карту более похожей на это: A Heat Map with Clustering

Как видите, эта тепловая карта имеет кластеризацию строк, которые я ищу, и цветовую схему, которая мне нужна.

Я также предполагаю, что правильная тепловая карта выполнена в логарифмическом масштабе. Первая картинка не такая, и я прошу прощения. Я знаю, что близок к своей цели, но я не уверен, как поступить, чтобы достичь конечного результата. Я хотел бы сохранить формат первой картинки; все, что мне нужно было бы сделать, это поместить "Sample ID" в качестве заголовка x и "CDR3AA" в качестве заголовка y. Любая помощь для этого будет принята с благодарностью. Я все еще изучаю R, поэтому все, что есть для изучения, я хочу изучать. Thx!

1 Ответ

0 голосов
/ 28 марта 2019

Я также предполагаю, что правильная тепловая карта сделана в логарифмическом масштабе. Вы можете сделать тепловую карту с данными, преобразованными в журнал, но в основном вы также можете использовать другие преобразования - до тех пор, пока значения будут нормализованы.

Вы можете выполнить преобразование журнала для столбца данных, например:

df$log_col <- log(df$col)

или как это:

df$log10_col <- log10(df$col)

NB. Вы считываете данные в виде информационного кадра, в то время как в вашем образце / примере данных используется матрица, представляющая собой разные структуры.

...