0

我正在使用 R 中的 image() 函数绘制几个热图。热图的大小变化很大,因此每个热图都有不同的高度,但是我希望热图中的行高是统一的。所以我从这两个矩阵创建热图,每个单元格的高度在两个热图之间是不同的:

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="")

对于我的生活,我无法弄清楚如何指定行高。这一定是一个非常容易解决的问题,但我无法弄清楚。

4

3 回答 3

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="") 

我相信有更优雅的解决方案,具体取决于您对图表的实际操作。

于 2013-01-03T16:45:49.103 回答
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)) ))
于 2013-01-03T16:54:56.340 回答
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)) )
于 2013-01-03T17:01:19.707 回答