2016-10-24 3 views
1

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

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

enter image description here

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

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

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

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) 

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

+0

не мог бы вы объединить два CSV-файлов, а затем запустить два разных участки путем Подменят наблюдения, на основании которых файл он пришел? – Phil

+0

Может быть ... как я могу это сделать? –

+0

Я только что прочитал виньетку. Я удивлен, что у него нет аргумента подмножества. Что произойдет, если добавить столбец в обоих CSV-файлов с указанием, принадлежит ли он 'csv1' или' csv2' (давайте назовем переменную 'csv_filter'), а затем выполните следующие действия: ' библиотека (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) ' – Phil

ответ

2

Вы можете установить тот же масштаб, указав то же самое 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) 

enter image description hereenter image description here

Смежные вопросы