I am creating graphs for a publication and would like them to have the same font size.
When I create a figure with multiple plots, the font size decreases even though I haven’t changed the tiff() resolution or pointsize parameter.
I increased the figure size according to ultimately fit the number of plots, and made sure the margins are equivalent for single and multiple plot figures.
Following is an example code (The font size is consistent between 1×1 and 2×1 figure, but decreases for 3×2 figure):
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()
Why is this happening?
P.S.: I’m not using ggplot2 or lattice because I’m using my own error bar function on the “actual” figures (I can’t remember why right now but I tried working with the ggplot2 error bars and didn’t get what I wanted).
The parameter controlling the overall relative size of objects in the plot (including text) is called
cex. When you use many panels it is decreased by default, but it can be overridden by manually setting it to1.Off-topic-tip
It looks like you should use
oma(outer margin) rather than callingpar(mar=...)between the calls toplot. I find it very useful, but hardly anyone seems to know of it. Alsoann=FALSEturns off all anotations,las=1turns axis tick labels horizontal.