我正在使用标准R图并创建一个带有两个轴的图形。
一切都很好,直到我试图绘制par(mfrow=c(4,3))
。右侧的标签总是有点大......当我绘制par(mfrow=c(1,1))
时,一切看起来都很好。
new_cex <- .75
pdf(file='jnk.pdf', width=11.69, height=8.27)
par(mfrow=c(4,3), mar=c(5,4,4,5)+.1)
for(i in 1:12) {
x <- runif(10)
y1 <- runif(10)
y2 <- runif(10)
plot(1, type="n", xlim=range(x), bty="n", axes=F, cex.lab=new_cex,
ylim=range(pretty(range(y1))), xlab="Time (hours)", ylab="ABC")
axis(1, at=x, labels=round(x,2), cex.axis=new_cex, las=2)
axis(side=2, at=pretty(range(y1)), cex.axis=new_cex, las=2)
points(x, y1, lwd=2)
lines(lowess(x, y1), lwd=6)
par(new=TRUE)
plot(1, type="n", axes=F, bty="n", xlab="", ylab="", xlim=range(x), ylim=range(y2))
axis(side=4, at=pretty(range(y2)), cex.axis=new_cex, las=2)
mtext("CDE",side=4,line=3, cex=new_cex)
points(x, y2, col=2, lwd=2)
lines(lowess(x, y2), col=2, lwd=6, lty=2)
}
dev.off()
我使用了全局new_cex
变量,我发现在mfrow=c(4,3)
的情况下,标签总是有点大。所以总的来说它正在改变......
也许有人可以尝试一下,也许这是一个版本化的东西......通过将3行更改为mfrow=c(1,1)
,所有轴标签将具有相同的大小......
答案 0 :(得分:2)
mtext
的帮助明确指出根据par(mfrow=c(4,3))
不缩放cex:
CEX
人格膨胀因素。 NULL和NA相当于1.0。 这是一个绝对的衡量标准,不是通过标准(&#34; cex&#34;)或通过设置来缩放的 par(&#34; mfrow&#34;)或par(&#34; mfcol&#34;)。可以是矢量。
要解决此问题,请保存原始cex
,然后在更改par(mfrow)
后测量缩小比例,并在mtext
中使用,即:
par(mfrow=c(1,1)) # to restore original cex and layout
new_cex <- .75
originalCex <- par("cex")
par(mfrow=c(4,3), mar=c(5,4,4,5)+.1)
originalCexReduced <- par("cex")
cexRatio <- originalCexReduced / originalCex
for(i in 1:12) {
x <- runif(10)
y1 <- runif(10)
y2 <- runif(10)
plot(1, type="n", xlim=range(x), bty="n", axes=F, cex.lab=new_cex,
ylim=range(pretty(range(y1))), xlab="Time (hours)", ylab="ABC")
axis(1, at=x, labels=round(x,2), cex.axis=new_cex, las=2)
axis(side=2, at=pretty(range(y1)), cex.axis=new_cex, las=2)
points(x, y1, lwd=2)
lines(lowess(x, y1), lwd=6)
par(new=TRUE)
plot(1, type="n", axes=F, bty="n", xlab="", ylab="", xlim=range(x), ylim=range(y2))
axis(side=4, at=pretty(range(y2)), cex.axis=new_cex, las=2)
mtext("CDE",side=4,line=3, cex=new_cex*cexRatio)
points(x, y2, col=2, lwd=2)
lines(lowess(x, y2), col=2, lwd=6, lty=2)
}
cexRatio
是0.66
,或多或少都是你注意到的。