使用布局在R中的间距和绘图尺寸

时间:2016-12-05 19:27:08

标签: 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.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")

这是我得到以下图表的结果: enter image description here

我想摆脱两个图之间的空间,同时我希望顶部图的宽度和高度相同。有没有办法用布局功能来实现这个目的?

1 个答案:

答案 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")

enter image description here

更新:获得方形图的一种方法是设置par(pty="s")(默认为“m”),它提供1/1的宽高比。但是,在为第二个绘图重置par(pty="m")之后,这两个绘图可能没有相同的宽度,您必须使用绘图大小来排列它们。

另一个选项是设置输出文件大小,以便在将其保存到pngpdf时获得所需的宽高比。例如:

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()

可能有一种编程方式可以确保所需的宽高比并正确排列图形而无需任何手动调整,但我不知道该怎么做。