R,图,字体大小在多个图中有所变化

sea*_*pen 2 plot r resolution font-size

我正在为出版物创建图表,并希望它们具有相同的字体大小.

当我创建一个包含多个图的图形时,即使我没有更改分辨率或参数,字体也会减小.我根据最终拟合图的数量增加了数字大小,并确保单个和多个绘图数字的边距相等.tiff()pointsize

以下是一个示例代码(字体大小在1x1和2x1数字之间是一致的,但是对于3x2数字减少):

tiff("1x1.tif", width=3,height=2.5,units="in",res=600,pointsize=8,
compression="lzw",restoreConsole=T)
par(mfrow=c(1,1),mar=c(4,4,.5,.5)+0.1)
plot(x=rnorm(10),y=rnorm(10))
dev.off()

tiff("2x1.tif", height=2.5*2,width=3,units="in",res=600,pointsize=8,
compression="lzw",restoreConsole=T)
par(mfrow=c(2,1),mar=c(2,4,2.5,0.5)+0.1)
plot(x=rnorm(10),y=rnorm(10),xaxt="n",xlab="")
par(mar=c(4,4,0.5,0.5)+0.1)
plot(x=rnorm(10),y=rnorm(10))
dev.off()

tiff("3x2.tif", height=2.5*3,width=3*2,units="in",res=600,pointsize=8,
compression="lzw",restoreConsole=T)
par(mfrow=c(3,2),mar=c(.5,4,4,0.5)+0.1)
plot(x=rnorm(10),y=rnorm(10),xaxt="n",xlab="")
par(mar=c(.5,2,4,2.5)+0.1)
plot(x=rnorm(10),y=rnorm(10),xaxt="n",xlab="",yaxt="n",ylab="")
par(mar=c(2.5,4,2,0.5)+0.1)
plot(x=rnorm(10),y=rnorm(10),xaxt="n",xlab="")
par(mar=c(2.5,2,2,2.5)+0.1)
plot(x=rnorm(10),y=rnorm(10),xaxt="n",xlab="",yaxt="n",ylab="")
par(mar=c(4.5,4,0,0.5)+0.1)
plot(x=rnorm(10),y=rnorm(10))
par(mar=c(4.5,2,0,2.5)+0.1)
plot(x=rnorm(10),y=rnorm(10),yaxt="n",ylab="")
dev.off()
Run Code Online (Sandbox Code Playgroud)

为什么会这样?

PS:我没有使用ggplot2lattice因为我在"实际"数字上使用我自己的错误栏功能(我现在不记得为什么但是我尝试使用ggplot2错误栏并且没有得到我想要的).

Bac*_*lin 10

调用控制图中对象的总体相对大小的参数(包括文本)cex.当您使用许多面板时,默认情况下它会减少,但可以通过手动将其设置为覆盖来覆盖它1.

par(mfrow=c(3,2), mar=c(.5,4,4,0.5)+0.1, cex=1)
Run Code Online (Sandbox Code Playgroud)

题外话尖

看起来你应该使用oma(外边距)而不是在调用par(mar=...)之间调用plot.我发现它非常有用,但似乎没有人知道它.同时ann=FALSE关闭所有anotations,las=1将轴刻度标签水平转动.

par(mfrow=c(3,2), oma=c(4.5, 4, 4, 2.5), mar=rep(.1, 4), cex=1, las=1)
plot(x=rnorm(10), y=rnorm(10), ann=FALSE, xaxt="n")
plot(x=rnorm(10), y=rnorm(10), ann=FALSE, xaxt="n", yaxt="n")
plot(x=rnorm(10), y=rnorm(10), ann=FALSE, xaxt="n")
plot(x=rnorm(10), y=rnorm(10), ann=FALSE, xaxt="n", yaxt="n")
plot(x=rnorm(10), y=rnorm(10), ann=FALSE)
plot(x=rnorm(10), y=rnorm(10), ann=FALSE, yaxt="n")
title("My plot", outer=TRUE)
mtext("X-axis label", 1, 3, outer=TRUE)
mtext("Y-axis label", 2, 3, outer=TRUE, las=0)
Run Code Online (Sandbox Code Playgroud)

在此输入图像描述