在一个图中调整不同图之间的边距

时间:2015-05-29 17:33:08

标签: r plot margins

我想使用下面的布局命令将这3个图绘制成一个图形。 不幸的是,情节1和2之间的差距非常大。我已经尝试过“heights = c()”命令,但我不想改变两个图之间的比例。我希望两个图都有相同的大小,因此只是减少两者之间的差距,但我还没有找到足够的解决方案,我不知道如何在这里使用par(mar)命令。

layout(matrix(c(1,1,3,2,2,3),2,3,byrow=TRUE))
hist(Data$X,breaks=16,prob=TRUE,xlab="X",ylab="Density",main="",ylim=c(0.000,0.040))
axis(side=1,at=seq(40,120,10),labels=seq(40,120,10))
lines(density(Data$X,na.rm=TRUE), col="blue", lwd=2)
lines(density(Data$X,na.rm=TRUE, adjust=2),lty="dotted",col="darkgreen", lwd=2)
qqnorm(Data$X,main="")
boxplot(Data$X)

非常感谢你的帮助。是否有可能使用ggplot和aes()代替?

非常感谢!

Thore

1 个答案:

答案 0 :(得分:0)

在我看来,多余的空白完全是由低于和高于数字的顶部和底部边缘的组合引起的。通过使用mar进行游戏,我觉得你可以通过将顶部和底部边距从默认的c(5,4,4,2)+0.1减少到c(4,4,1,1)+0.1来解决这个问题(注意:我也减少了对于均匀度略微右边距(注意:既然你没有提供Data,我从正态分布中合成它):

set.seed(1); Data <- data.frame(X=rnorm(100,80,15))
par(mar=c(4,4,1,1)+0.1)

layout(matrix(c(1,1,3,2,2,3),2,3,byrow=TRUE))
hist(Data$X,breaks=16,prob=TRUE,xlab="X",ylab="Density",main="",ylim=c(0.000,0.040))
axis(side=1,at=seq(40,120,10),labels=seq(40,120,10))
lines(density(Data$X,na.rm=TRUE), col="blue", lwd=2)
lines(density(Data$X,na.rm=TRUE, adjust=2),lty="dotted",col="darkgreen", lwd=2)
qqnorm(Data$X,main="")
boxplot(Data$X)

plot