On Sat, 2007-03-17 at 21:56 -0500, Marc Schwartz wrote: > On Sat, 2007-03-17 at 22:01 -0400, Chabot Denis wrote: > > Hi, > > > > As part of the legend to a plot, I need to have the "n" in italics > > because it is a requirement of the journal I aim to publish in: > > "This study, n = 3293" > > > > Presently I have: > > legend(20, 105, "This study, n = 3293", pch=1, col=rgb(0,0,0,0.5), > > pt.cex=0.3, cex=0.8, bty="n") > > > > I suppose I could leave a blank in place of the "n", then issue a > > text call where I'd use font=3 for a single letter, "n". But it will > > be tricky to find the exact location to use. > > > > Is there a way to switch to font=3 just for one letter within a string? > > > > Thanks in advance, > > > > Denis Chabot > > Denis, > > Try something like this: > > plot(20, 100) > > leg <- legend(20, 105, "This study, = 3293", pch = 1, > col=rgb(0,0,0,0.5), pt.cex = 0.3, cex = 0.8, > bty = "n") > > text(leg$text$x + strwidth("This study, ", cex = 0.8), > leg$text$y, "n", font = 3, cex = 0.8, adj = c(0, 0.5)) > > > Note that legend returns a list structure, which contains the x and y > coordinates of the start of the text strings that are plotted. So I get > that information for your line of text. > > Next, I use strwidth() to calculate, in user coordinates, the length of > the characters preceding the 'n', including spaces. We add that > distance to the x coordinate returned in the legend call. > > I also use the 'adj' argument in the text() call, so that it is in synch > with the same parameters in legend() for alignment with the other > letters. > > See ?strwidth for more information. > > You may have to tweak the horizontal spacing of the 'n' a bit, depending > upon the rest of your graph.
Denis, I thought of another approach, using plotmath. First, create a text expression, specifying that the 'n' should be italicized. Then use that expression in the legend() call. txt <- expression(paste("This study, ", italic(n), " = 3293")) plot(20, 100) legend(20, 105, txt, pch = 1, col=rgb(0,0,0,0.5), pt.cex = 0.3, cex = 0.8, bty = "n") That's easier that the first solution. See ?plotmath HTH, Marc Schwartz ______________________________________________ R-help@stat.math.ethz.ch 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.