R pheathmap, как установить одинаковый масштаб на двух изображениях тепловой карты?

У меня есть две матрицы в двух разных файлах csv, и я хочу построить их с одинаковой цветовой шкалой.

Это то, что у меня есть сейчас, и это НЕ работает:

введите описание изображения здесь

Как видите, оба изображения используют одни и те же цветовые диапазоны (от синего до красного), но их значения различны: у них разные интервалы.

Я хочу связать одни и те же цвета с одним и тем же диапазоном значений на двух тепловых картах.

Вот мой код для тепловой карты:

library(pheatmap)
datatable_normal = data.matrix(read.table(fileName, sep="\t", header=T, row.names=1))
pheatmap(datatable_normal, cluster_rows=FALSE, cluster_cols=FALSE, show_rownames=T, width=10, height=10)

Как я могу решить эту проблему?


person DavideChicco.it    schedule 24.10.2016    source источник
comment
Не могли бы вы объединить два CSV-файла, а затем запустить два разных графика, подмножив наблюдения в зависимости от того, из какого файла они взяты?   -  person Phil    schedule 24.10.2016
comment
Может... как мне это сделать?   -  person DavideChicco.it    schedule 24.10.2016
comment
Я только что прочитал виньетку на пакете. Я удивлен, что у него нет аргумента subset. Что произойдет, если вы добавите в оба CSV-файла столбец, указывающий, принадлежит ли он csv1 или csv2 (давайте назовем переменную csv_filter), а затем выполните следующие действия: library(tidyverse) bind_rows(csv1, csv2) datatable_normal1 = data.matrix(read.table(fileName[which(fileName$csv_filter == 1),], sep="\t", header=T, row.names=1)) pheatmap(datatable_normal1, cluster_rows=FALSE, cluster_cols=FALSE, show_rownames=T, width=10, height=10)   -  person Phil    schedule 24.10.2016


Ответы (1)


Вы можете установить тот же масштаб, указав тот же breaks.

Вот мой пример:

library(pheatmap)

  ## example data   
set.seed(1); test1 <- matrix(rnorm(25, 0, 10), 5, 5)
set.seed(2); test2 <- matrix(rnorm(25, 30, 10), 5, 5)
colnames(test1) = paste0("Test", 1:5); rownames(test1) = paste0("Gene", 1:5)
colnames(test2) = paste0("Test", 1:5); rownames(test2) = paste0("Gene", 1:5)

  ## make breaks from combined range
Breaks <- seq(min(c(test1, test2)), max(c(test1, test2)), length = 100)

  ## draw   
pheatmap(test1, breaks = Breaks, cluster_rows=FALSE, cluster_cols=FALSE)
pheatmap(test2, breaks = Breaks, cluster_rows=FALSE, cluster_cols=FALSE)

введите описание изображения здесьвведите здесь описание изображения

person cuttlefish44    schedule 25.10.2016