2013-01-03 64 views
0

我使用R中的image()函數繪製了幾個熱圖。 熱圖的大小相當多變,因此每個熱圖具有不同的高度,但是我希望行高度在熱點圖上是均勻的。 所以我創建這兩個矩陣熱圖,每個單元的高度的兩個熱圖之間是不同的:調整R圖像中的行高()函數

m1<-replicate(40, rnorm(20))  
image(1:ncol(m1), 1:nrow(m1), t(m1), axes = FALSE,xlab="",ylab="") 


m2<-replicate(40, rnorm(10)) 
image(1:ncol(m2), 1:nrow(m2), t(m2), axes = FALSE,xlab="",ylab="") 

對於我的生活,我想不通我怎麼可以指定行的高度。它一定是一個非常簡單的解決方案,但我無法弄清楚。

回答

0

您提供的信息非常有限。例如,你想創建PDF文件嗎?或者在一個頁面上放置幾個地塊?

這裏是一個解決方案:

par(fin=c(5,5),mar=c(0,0,0,0)) 
image(1:ncol(m1), 1:nrow(m1), t(m1), axes = FALSE,xlab="",ylab="") 

par(fin=c(5,2.5),mar=c(0,0,0,0)) 
image(1:ncol(m2), 1:nrow(m2), t(m2), axes = FALSE,xlab="",ylab="") 

我相信有這取決於你真正想要用圖表做更多的優雅的解決方案。

+0

我只需要創建數十個這些熱圖,並將它們分別保存爲pdf。 – zkalender

0

使用ylim參數只需設置行的常見最大數量爲所有熱圖:

m1<-replicate(40, rnorm(20))  
m2<-replicate(40, rnorm(10)) 

image(1:ncol(m1), 1:nrow(m1), t(m1), axes=FALSE, ann=FALSE, ylim=c(0, max(sapply(list(m1,m2),nrow)))) 
image(1:ncol(m2), 1:nrow(m2), t(m2), axes=FALSE, ann=FALSE, ylim=c(0, max(sapply(list(m1,m2),nrow)))) 
0

您可能需要手動指定ylim參數,並有是2個地塊之間是相同的:

par(mfrow=c(1,2)) 

image(0:ncol(m1), 0:nrow(m1), t(m1), axes=FALSE, xlab='', ylab='', 
     ylim=c(0,nrow(m1))) 
image(0:ncol(m2), 0:nrow(m2), t(m2), axes=FALSE, xlab='', ylab='', 
     ylim=c(0,nrow(m1)))