[R] changing default character size depending on settings for mfcol: How to scale font consistently?

Kim MILFERSTEDT milferst at supagro.inra.fr
Thu Oct 29 11:49:49 CET 2009


Dear R-users,

I would like to create pdf files with varying paper sizes. The paper 
size is determine by the number of plots that I squeeze on a page using 
par(mfcol).

I also add text to each of these plots. I observed that depending on the 
number of plots per page, the default character size is changing, 
leading to differing font sizes in my plot annotations.

I would like to use cex to scale the font size so that I obtain 
identical font sizes in my pdf, independent of the size of my page in 
the pdf.

My question is, how do I find out the current default for character size 
so that I can calculate an appropriate scaling factor? Or are there any 
better alternatives?

Below, I added an example code to produce three pdf files. Note that the 
red letters in the plot have different sizes, depending on the number of 
plots per page.

Thank you very much in advance!

Kim

platform       i386-pc-mingw32
arch           i386
os             mingw32
system         i386, mingw32
status
major          2
minor          10.0
year           2009
month          10
day            26
svn rev        50208
language       R
version.string R version 2.10.0 (2009-10-26)

Example code

test.data <- matrix(rnorm(300, 100, 25), nrow=3, ncol = 100, byrow = TRUE)
x <- seq(1,100)
how.many.to.plot <- c(1,2,3)


for(i in 1:length(how.many.to.plot))
     {
     test.data.red <- matrix(test.data[1:how.many.to.plot[i],], nrow 
=how.many.to.plot[i], ncol = 100)
     pdf.name <- paste("test", how.many.to.plot[i], ".pdf", 
sep="",collapse="")

     pdf(file= pdf.name, width = 7, height=(7/5)*nrow(test.data.red))
     par(mar=c(0, 0, 0, 0.0), cex = 1, oma = c(0,0,0,0), mfcol= 
c(nrow(test.data.red),1))

     for(j in 1:(nrow(test.data.red)))
         {
         plot(       x,
                     test.data.red[j,],
                     ylim = c(0, max(test.data.red[j,])),
                     type = "l",
                     xaxt = "n",
                     yaxt = "n",
                     )
         text(       x = 30,
                     y = 75,
                     labels = LETTERS[j],
                     cex = 1.6,
                     col ="red"
             )
         }
dev.off()
     }
-- 
________________________________________________
Kim Milferstedt, PhD
Postdoctoral Researcher
INRA
Laboratoire de Biotechnologie de l'Environnement
Avenue des Etangs
F-11100 Narbonne
France

phone: (+33) 04 68 42 51 87
fax: (+33) 04 68 42 51 60
email: milferst at supagro.inra.fr




More information about the R-help mailing list