我正在使用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="")
对于我的生活,我无法弄清楚如何指定行高。它必须是一个非常简单的解决方案,但我无法弄清楚。
答案 0 :(得分: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="")
我确信有更多优雅的解决方案,具体取决于您对图表的实际需求。
答案 1 :(得分: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)) ))
答案 2 :(得分:0)
您可能需要手动指定ylim
参数,并且两个图之间的参数相同:
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)) )