[R] font size relative to graphic

David Winsemius dwinsemius at comcast.net
Fri Apr 24 21:26:30 CEST 2009


On Apr 24, 2009, at 3:14 PM, Mike Miller wrote:

> I am printing numbers onto horizontal bars in a bar plots, but I am  
> finding it difficult to make the number always the right size.  If  
> there are more bars, the bars get narrower and the font is too big.   
> I also find that if I change the size of the graph, the bars will  
> get wider or narrower and the font stays about the same size.  The  
> result depends on whether I view the graph in X11 or in postscript.
>
> Is there a way to specify font size relative to bar width, or at  
> least specify font size relative to graph coordinates?
>
> Here's a bit of what I've been doing:
>
> x.bar.plot <- barplot(as.matrix(x), horiz=TRUE, beside=TRUE,  
> xlim=c(0,100), xlab="Score", las=1)
> text(as.matrix(x), x.bar.plot-.07,  
> as.character(as.matrix(round(x))), pos=2, col="black")
>
> The "-.07" is something I added to make the numbers align well with  
> the bars under one condition, but it doesn't always help.
>
> Any tips would be greatly appreciated.  Thanks in advance.

The values returned from the barplot function are the locations of the  
bars. Why not call barplot, collect the values, and then use the  
length of the result to determine your sizes and widths?

hh <- t(VADeaths)[, 5:1]
mybarcol <- "gray20"
mp <- barplot(hh, beside = TRUE,
         col = c("lightblue", "mistyrose",
                 "lightcyan", "lavender"),
         legend = colnames(VADeaths), ylim= c(0,100),
         main = "Death Rates in Virginia", font.main = 4,
         sub = "Faked upper 2*sigma error bars", col.sub = mybarcol,
         cex.names = 1.5)

length(mp)  #  [1] 20

-- 

David Winsemius, MD
Heritage Laboratories
West Hartford, CT




More information about the R-help mailing list