On 01/04/2010 3:39 PM, Tighiouart, Hocine wrote:
Hi,

I have text (see below) that is aligned nicely when printed in the
command window in R but when plotted using text function, it does not
show alignment unless I use the family="mono" in the call to the text
function. Is there a way to specify a different font while maintaining
the alignment?

 Eric & Alan 1667   3   459
 Alan 2001          45  34
 John & David 1996  2   5235



Plot each of the parts separately, i.e. plot 9 objects, not 3. You can use strwidth() to compute how big each part is and adjust the positioning based on that.

You might also be able to do it using paste() and atop() with an expression; see ?plotmath. But I think manual positioning is easiest. Here's an example:

leftalign <- function(x, y, m) {
 widths <- strwidth(m)
 dim(widths) <- dim(m)
 widths <- apply(widths, 2, max)
 widths <- widths + strwidth("   ")
 heights <- strheight(m)
 dim(heights) <- dim(m)
 heights <- apply(heights, 1, max)
 heights <- heights*1.5

 xoffsets <- c(0, cumsum(widths[-length(widths)]))
 yoffsets <- c(0, -cumsum(heights[-length(heights)]))

 text(x + rep(xoffsets, each=nrow(m)),
      y + rep(yoffsets, ncol(m)), m, adj=c(0,1))

}

plot(1)
leftalign(0.8, 1.2, matrix(c("Eric & Alan 1667", "Alan 2001", "John & David 1996", 3,45,2,459,34,5235), ncol=3))

Obviously you could make it a lot more elaborate, with left alignment for some columns and right alignment for others, etc. Probably some package has already done this.

Duncan Murdoch

______________________________________________
R-help@r-project.org mailing list
https://stat.ethz.ch/mailman/listinfo/r-help
PLEASE do read the posting guide http://www.R-project.org/posting-guide.html
and provide commented, minimal, self-contained, reproducible code.

Reply via email to