使用布局的R中的间距和打印尺寸

使用布局的R中的间距和打印尺寸,r,R,我正在使用布局功能使用以下代码排列两个绘图: #Set up layout m <- matrix(c(1,1,2, 1,1,2), nrow = 3, ncol = 2) layout(m) #First plot plot(data$WG,data$RPOP, pch=21, cex=0.8, col=data$circle, bg=data$fill, xaxt='n', yaxt='n', bty="L", xlab="", ylab="Y label 1",xlim=c(0.

我正在使用布局功能使用以下代码排列两个绘图:

#Set up layout
m <- matrix(c(1,1,2,  1,1,2), nrow = 3, ncol = 2)
layout(m)

#First plot
plot(data$WG,data$RPOP, pch=21, cex=0.8, col=data$circle, bg=data$fill, xaxt='n', yaxt='n', bty="L", xlab="", ylab="Y label 1",xlim=c(0.02,1), ylim=c(0.02,1))+axis(side=1, at=seq(0,1, .1), pos=-0.02, tck=-.01, labels=FALSE)+axis(side=2, at=seq(0,1, .1), pos=-0.02, tck=-.01, las=1)

#Second plot
datum<-data.frame(prop=c(0.027879, 0.031515,0.001212,0,0,0,0,0,0,0,0),freq=c(0, 0.1,0.2,0.3,0.4,0.5,0.6,0.7,0.8,0.9,1.0))
plot(datum$freq,datum$prop, cex=0, xaxt='n', yaxt='n', bty="L", xlab="X label", ylab="Y label 2", xlim=c(0.02,1), ylim=c(0.001,0.05))+axis(side=1, at=seq(0, 1, 0.1), pos=-0.001, tck=-.01)+axis(side=2, at=seq(0, 0.05, 0.01), pos=-0.02, tck=-.01, las=1)+lines(datum$freq,datum$prop, lwd=2, col="red")
#设置布局

m更改边距以使绘图更接近。默认页边距为5.1、4.1、4.1、2.1,顺序为底部、左侧、顶部、右侧。因此,我们将使顶部图的底部边距变小,底部图的顶部边距变小。要在完成后将边距重置为默认值,请执行以下操作
par(mar=c(5,4,4,2)+0.1)


可能有一种编程方法可以确保所需的纵横比,并在不进行任何手动调整的情况下正确排列绘图,但我不确定如何做到这一点。

更改边距以使绘图更接近。默认页边距为5.1、4.1、4.1、2.1,顺序为底部、左侧、顶部、右侧。因此,我们将使顶部图的底部边距变小,底部图的顶部边距变小。要在完成后将边距重置为默认值,请执行以下操作
par(mar=c(5,4,4,2)+0.1)


可能有一种编程方法可以确保所需的纵横比,并在不进行任何手动调整的情况下正确排列绘图,但我不确定如何操作。

顶部绘图的宽度似乎仍然大于其高度。抱歉,我错过了您问题的这一部分。请参阅更新。顶部绘图的宽度似乎仍大于其高度。抱歉,我错过了你问题的这一部分。请参阅更新。
#Set up layout
m <- matrix(c(1,1,2,  1,1,2), nrow = 3, ncol = 2)
layout(m)

# Smaller bottom margin for top plot
par(mar=c(1,4,4,2))

#First plot
plot(data$WG,data$RPOP, pch=21, cex=0.8, col=data$circle, bg=data$fill, xaxt='n', yaxt='n', bty="L", xlab="", ylab="Y label 1",xlim=c(0.02,1), ylim=c(0.02,1))+axis(side=1, at=seq(0,1, .1), pos=-0.02, tck=-.01, labels=FALSE)+axis(side=2, at=seq(0,1, .1), pos=-0.02, tck=-.01, las=1)

#Second plot
datum<-data.frame(prop=c(0.027879, 0.031515,0.001212,0,0,0,0,0,0,0,0),freq=c(0, 0.1,0.2,0.3,0.4,0.5,0.6,0.7,0.8,0.9,1.0))

# Smaller top margin for bottom plot
par(mar=c(5,4,1,2))

plot(datum$freq,datum$prop, cex=0, xaxt='n', yaxt='n', bty="L", xlab="X label", ylab="Y label 2", xlim=c(0.02,1), ylim=c(0.001,0.05))+axis(side=1, at=seq(0, 1, 0.1), pos=-0.001, tck=-.01)+axis(side=2, at=seq(0, 0.05, 0.01), pos=-0.02, tck=-.01, las=1)+lines(datum$freq,datum$prop, lwd=2, col="red")
png("test.png", 600, 800)

... All of your plotting code, including call to layout...

dev.off()


pdf("test.pdf", 6, 8)

... All of your plotting code, including call to layout...

dev.off()