Как я могу объединить несколько тепловых карт, используя R в фигуре сигнала

Я создал 36 тепловых карт с помощью функции pheatmap и хочу отобразить их только на одном рисунке. Я пытался использовать функцию par(), но она не работала, не знаю почему. Может ли кто-нибудь сказать мне, что мне делать? Спасибо большое. Это мой код:

require(graphics);require(grDevices);library("pheatmap", lib.loc="D:/Program Files/R/R-3.1.1/library");library(gplots)
filenames<-list.files("D:/Project/bladder cancer/heatmap0829/heatmap/"); # detect all of the files in the fold
filename2<-strtrim(filenames,nchar(filenames)-4); # all of the filenames without extension names
par(mfrow=c(18,2)) #divide the graphics windows into a 18x2 matrix
for(i in 1:length(filename2)){
rt<-read.table(paste("D:/Project/bladder cancer/heatmap0829/heatmap/",filenames[i],sep = ""), header = T, sep = '\t') # Import the data with the ith file name
size=dim(rt) # the dimensional of the datafram
 cw=400/size[1] #the width of the cell in the heatmap
rt<-log10(rt)
x <- t(data.matrix(rt))
pheatmap(x,color=greenred(256),main=filename2[i],cluster_rows = F, cluster_cols = T,cellwidth = cw, cellheight = 60,border_color =F,fontsize = 8,fontsize_col = 15)}

Это один набор данных

ScaBER  5637
1   1.010001e+02
1.341186e+00    2.505067e+01
1.669456e+01    8.834190e+01
7.141351e+00    3.897474e+01
1.585592e+04    5.858210e+04
1   3.137979e+01
1.498863e+01    7.694948e+01
1.115443e+02    3.642917e+02
1.157677e+01    5.036716e+01
4.926492e+02    8.642784e+03
3.047117e+00    1.872154e+01

У меня есть 36 таких txt-файлов, но я не могу поместить их все сюда. «ScaBER 5637» — это имя столбца этого набора данных.


person Zihu Guo    schedule 31.08.2014    source источник
comment
Большинство функций тепловой карты имеют приоритет над обычными настройками par(). Вы должны либо использовать более примитивную функцию, такую ​​как image, либо включать данные и быть более четкими в том, что вы хотите.   -  person IRTFM    schedule 31.08.2014
comment
Большое спасибо за ваш ценный ответ, я добавил один набор данных после моего кода.   -  person Zihu Guo    schedule 31.08.2014
comment
Входными данными для тепловой карты или изображения будет либо матрица, либо z-вектор с указанными векторами x и y. Вы все еще не описали, что вы ожидаете увидеть в этом небольшом примере с данными из двух столбцов.   -  person IRTFM    schedule 31.08.2014


Ответы (1)


См. этот предыдущий ответ: Гистограмма, ошибка: ошибка на графике .new() : слишком большие поля фигуры

par(mfcol=c(3,12), oma=c(1,1,0,0), mar=c(1,1,1,0), tcl=-0.1, mgp=c(0,0,0))


for(i in 1:36){

  plot(runif(2), runif(2), type="l")

}

dev.off()
person mr.joshuagordon    schedule 31.08.2014
comment
спасибо за ваше предложение, но оно не работает, возможно, есть что-то другое между графиком тепловой карты и другим - person Zihu Guo; 31.08.2014