繁体   English   中英

R: plot 网格对象使用 par(mfrow)

[英]R: plot grid objects using par(mfrow)

我想 plot 网格对象和基础 R 对象在同一个 png 上。 我正在使用的 package(元)使用网格图形系统。

如果可能的话,我想使用 mfrow ,因为它是我在其他地方使用的。

如果我 plot:

png("test.png",width=297,height=210,units="mm",res=300)
par(mfrow=c(2,2))
plot(1,1)
plot(1,1)
plot(1,1)
plot(1,1)
dev.off()

一切正常。

但是,如果我 plot:

library(meta)
m <- metaprop(4:1, c(10, 20, 30, 40))
png("test.png",width=297,height=210,units="mm",res=300)
par(mfrow=c(2,2))
plot(1,1)
forest(m,new=F)
plot(1,1)
forest(m,new=F)
dev.off()

事情是不对的,因为森林地块试图占据整个页面而不是被限制在它们的角落。

在此先感谢您的帮助

我敢打赌,它的行为类似于 heatmap() 图,请参见此处

帖子中解决方案的可能示例(未测试):

--snip // 引文(Paul Murrell 博士)--

library(gridGraphics) 
grid.newpage() 
pushViewport(viewport(0, .5, .5, .5, just=c("left", "bottom"))) 
grid.echo(function() { heatmap(test) }, newpage=FALSE) 
popViewport() 
pushViewport(viewport(.5, 0, .5, .5, just=c("left", "bottom"))) 
grid.echo(function() { heatmap(test) }, newpage=FALSE) 
popViewport() 

--剪辑--

修改这个答案,您可以将它们组合成一个 plot,但我认为forest()的边距和设置需要优化,以便可以正确看到标题等:

library(gridBase)
library(gridExtra)

layout(matrix(c(1,2),nrow=1),widths=c(1,3))
par(mar=c(2.5,2.5,2.5,2.5))

plot(1,1)

plot.new()
vps <- baseViewports()
pushViewport(vps$figure)
vp1 <-plotViewport()
forest(m,new=FALSE)
popViewport()

在此处输入图像描述

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM